在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崩溃
可以在此处找到更多详细信息,随时进行派生并发送拉取请求: