Android drawable目录可以包含子目录吗?

六月ゝ 毕业季﹏ 提交于 2020-02-25 22:03:18

在Android SDK文档中,与@ drawable / my_image xml语法一起使用的所有示例都直接解决了存储在我项目的res / drawable目录中的图像。

我想知道在drawable目录中创建子目录是否明显不可行。

例如,如果我具有以下目录布局:

res/drawable
-- sandwiches
  -- tunaOnRye.png
  -- hamAndSwiss.png
-- drinks
  -- coldOne.png
  -- hotTea.png

我可以将金枪鱼色拉三明治的图像引用为@ drawable / sandwiches / tunaOnRye

还是我必须在可绘制目录中保持层次结构平坦。


#1楼

不可以,资源机制不支持drawable目录中的子文件夹,所以可以-您需要保持层次结构平坦。

您显示的目录布局将导致所有图像都不可用。

从我自己的实验来看,似乎在res/drawable文件夹中包含子文件夹的子文件夹将导致资源编译器失败-阻止正确生成R.java文件。


#2楼

随着图书馆系统的出现,为每套大资产创建一个图书馆可能是一种解决方案。

这仍然是有问题的,因为必须避免在所有资产中使用相同的名称,但是对每个库使用前缀方案应对此有所帮助。

它不像能够创建文件夹那样简单,但是有助于保持理智...


#3楼

#!/usr/bin/env ruby

# current dir should be drawable-hdpi/ etc

# nuke all symlinks
Dir.foreach('.') {|f|
    File.delete(f) if File.symlink?(f)
}

# symlink all resources renaming with underscores
Dir.glob("**/*.png") {|f|
    system "ln -s #{f} #{f.gsub('/', '_')}" if f.include?("/")
}

#4楼

这不是完美的方法。 您必须实现此处显示的相同方法。

您还可以通过可以使用的代码调用文件夹下的图片

Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);

#5楼

我已经编写了一个eclipse插件,该插件可以通过使用两个下划线__分隔文件名来创建虚拟子文件夹。 该项目尚处于初期阶段,但是请放心,它不会使您的IDE崩溃

可以在此处找到更多详细信息,随时进行派生并发送拉取请求:

https://github.com/kirill578/Android-Sorted-Res-Folder

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!