我读了那篇文章并试图在app / src / main / res / layout /
中制作子文件夹我想我做了那个答案中提到的所有事情。
apply plugin:
apply plugin:
apply plugin:
apply plugin:
android {
// something
sourceSets {
main {
res.srcDirs = getLayoutList("app/src/main/res/layout/")
}
}
def getLayoutList(path) {
File file = new File(path)
def throwAway = file.path.split("/")[0]
def newPath = file.path.substring(throwAway.length() + 1)
def array = file.list().collect {
"${newPath}/${it}"
}
def res="src/main/res";
array.push(res);
return array
}
dependencies { ... }
Test -- .gradle -- .idea -- app -- build -- libs -- src -- androidTest -- main -- assets -- java -- res -- layout -- about_login -- timetable -- activity_main.xml -- AndroidManifest.xml -- test -- build -- gradle -- .gitignore -- ... // Lot more setting files
但是当我同步我的gradle时,错误出现并说,索引错误
def newPath = file.path.substring(throwAway.length()+ 1)
在那条线上。请帮帮我。
第一。许多人在他们自己的电脑上工作,但我不能 第2位。我认为String.substring()之间有关系 3。我无法解决这个问题。
答案 0 :(得分:3)
您的项目结构中存在一个简单的错误。您需要创建布局目录不 布局。所以它应该是:
app/src/main/res/layouts/
然后在您的子文件夹中,您需要创建以创建布局目录。这应该是您的布局文件所在的位置。例如,如果您要在子文件夹 about_login 中创建login_activity.xml
,则需要创建以下目录:
app/src/main/res/layouts/about_login/layout
因此,login_activity.xml
路径将是:
app/src/main/res/layouts/about_login/layout/login_activity.xml
然后,在应用 build.gradle 中,您应该添加以下内容:
sourceSets {
main {
res.srcDirs =
[
'src/main/res', // Try removing this
'src/main/res/layouts',
'src/main/res/layouts/about_login',
]
}
}
每次需要创建子文件夹时,还需要创建 layout 目录并在布局目录中添加XML布局文件。
然后您的目录层次应该是这样的:
Test -- .gradle -- .idea -- app -- build -- libs -- src -- androidTest -- main -- assets -- java -- res -- layouts -- about_login -- layout -- login_activity.xml -- activity_main.xml -- AndroidManifest.xml -- test -- build -- gradle
您可以在下面评论以下代码,因为我们不需要它:
def getLayoutList(path) {
File file = new File(path)
def throwAway = file.path.split("/")[0]
def newPath = file.path.substring(throwAway.length() + 1)
def array = file.list().collect {
"${newPath}/${it}"
}
def res="src/main/res";
array.push(res);
return array
}