现在,我在'res/layout'文件夹内存储每个XML布局文件,因此管理小型项目是可行和简单的,但当有大型和繁重的项目的情况下,那么应该有一个层次结构和子文件夹内需要的布局文件夹。
如。
layout
-- layout_personal
-- personal_detail.xml
-- personal_other.xml
--layout_address
-- address1.xml
-- address2.xml
同样,我们希望大型应用程序有子文件夹,那么在Android项目中有办法做到这一点吗?
我能够在布局文件夹内创建layout-personal和layout_address子文件夹,但当需要使用R.layout访问XML布局文件时。_______,当时在菜单中没有任何XML布局弹出。
你可以用gradle做到这一点。我做了一个演示项目来展示如何做到这一点。
诀窍是使用gradle的能力来合并多个资源文件夹,并设置res文件夹以及sourceSets块中的嵌套子文件夹。
奇怪的是,在声明容器资源文件夹的子资源文件夹之前,您不能声明该文件夹。
下面是构建中的sourceSets块。演示中的Gradle文件。注意,先声明子文件夹。
sourceSets {
main {
res.srcDirs = [
'src/main/res/layouts/layouts_category2',
'src/main/res/layouts',
'src/main/res'
]
}
}
另外,实际资源文件(png、xml布局等)的直接父文件仍然需要与规范相对应。
我只是想补充eskis对遇到麻烦的人的精彩回答。(注意:这只会工作,看起来像“项目”视图中的单独目录,不幸的是,不是“android”视图。)
用以下测试。
BuildToolsVersion = 23.0.0
Gradle 1.2.3 & 1.3.0
这就是我如何让我的工作与一个已经建立的项目。
Copy all of the XML files out of your layout directory, and put them into a directory on the desktop or something for backup.
Delete the entire layout directory (Make sure you backed everything up from step 1!!!)
Right click the res directory and select new > directory.
Name this new directory "layouts". (This can be whatever you want, but it will not be a 'fragment' directory or 'activity' directory, that comes later).
Right click the new "layouts" directory and select new > directory. (This will be the name of the type of XML files you will have in it, for example, 'fragments' and 'activities').
Right click the 'fragment' or 'activities' directory (Note: this doesn't have to be 'fragment' or 'activities' that's just what i'm using as an example) and select new > directory once again and name this directory "layout". (Note: This MUST be named 'layout'!!! very important).
Put the XML files you want inside the new 'layout' directory from the backup you made on your desktop.
Repeat steps 5 - 7 for as many custom directories as you desire.
Once this is complete, go into your modules gradle.build file and create a sourceSets definition like this...(Make sure 'src/main/res/layouts' & 'src/main/res' are always the bottom two!!!! Like I am showing below).
sourceSets {
main {
res.srcDirs =
[
'src/main/res/layouts/activities',
'src/main/res/layouts/fragments',
'src/main/res/layouts/content',
'src/main/res/layouts',
'src/main/res'
]
}
}
Profit $$$$
但是说真的. .我就是这样让它起作用的。如果有人有任何问题,请告诉我。我可以试着帮忙。
图片比文字更有价值。
我这样做的一种方式是在你的项目中创建一个与实际res文件夹相同级别的单独的res文件夹,然后你可以在你的应用程序build.gradle中使用这个
android {
//other stuff
sourceSets {
main.res.srcDirs = ['src/main/res', file('src/main/layouts').listFiles()]
}
}
然后每个新res文件夹的子文件夹可以一些有关每个特定屏幕或一些在你的应用程序,和每个文件夹都有自己的布局/可拉的价值观等保持事物的组织和你不必须手动更新gradle文件和其他一些答案要求(同步你gradle每次添加一个新的资源文件夹,所以它知道它,并确保添加相关的子文件夹之前添加xml文件)。