在Android SDK文档中,所有使用@drawable/my_image xml语法的示例都直接处理存储在项目res/drawable目录中的图像。
我想知道在可绘制目录中创建子目录是否显式不允许。
例如,如果我有以下目录布局:
res/drawable
-- sandwiches
-- tunaOnRye.png
-- hamAndSwiss.png
-- drinks
-- coldOne.png
-- hotTea.png
我可以引用金枪鱼沙拉三明治的图片@drawable/三明治/tunaOnRye吗
或者我必须在可绘制目录中保持层次结构平坦。
在android studio和gradle中,你可以有多个源导演,这将允许你分离资源。例如:
android {
....
android.sourceSets {
main.res.srcDirs = ['src/main/extraresdirnamed_sandwiches', 'src/main/res']
}
....
}
然而,名称不能冲突,这意味着你仍然需要有名称,如三明治_tunaonrye,但你将能够有一个单独的部分,为所有的三明治。
这允许你存储你的资源在不同的结构(有用的自动生成的内容,如actionbargenerator)
对于任何使用Xamarin的人(或Xamarin。Android或Xamarin.Forms),有一种方法可以做到这一点。
在Android项目的.csproj文件中找到MonoAndroidResourcePrefix的行(这里有文档,尽管很差)。在这里添加您想要使用的子目录,用分号分隔每个条目。在构建时,Visual Studio会剥离这些前缀,以便所有资源最终都在一个扁平的层次结构中。在进行这些更改之后,您可能需要重新加载解决方案。
这些目录不需要是项目中默认Resources目录的子目录。
确保你添加的文件的构建动作设置为“AndroidResource”。
Xamarin的。Android,可视化编辑器将不识别图像,并将显示错误“此资源URL无法解析”,但项目将构建,图像将在运行时可见。