Die Top-Antwort von @eski ist gut, aber der Code ist nicht elegant zu benutzen, deshalb habe ich ein Groovy-Skript in Gradle für den allgemeinen Gebrauch geschrieben. Es wird auf alle Build-Typen und Produktvarianten angewendet und kann nicht nur für Layouts verwendet werden, sondern Sie können auch Unterordner für andere Ressourcentypen wie drawable hinzufügen. Hier ist der Code (legen Sie ihn in den android
-Block der Projekt-Ebene Gradle-Datei)
sourceSets.each {
def rootResDir = it.res.srcDirs[0]
def getSubDirs = { dirName ->
def layoutsDir = new File(rootResDir, dirName)
def subLayoutDirs = []
if (layoutsDir.exists()) {
layoutsDir.eachDir {
subLayoutDirs.add it
}
}
return subLayoutDirs
}
def resDirs = [
"anims",
"colors",
"drawables",
"drawables-hdpi",
"drawables-mdpi",
"drawables-xhdpi",
"drawables-xxhdpi",
"layouts",
"values",
]
def srcDirs = resDirs.collect {
getSubDirs(it)
}
it.res.srcDirs = [srcDirs, rootResDir]
}
Wie setzt man es in die Praxis um?
Zum Beispiel möchte ich einen Unterordner namens activity
für layout
erstellen, fügen Sie einen beliebigen Namen in die Variable resDirs
wie layouts
ein, dann sollte die Layout-XML-Datei in res\layouts\activity\layout\xxx.xml
platziert werden.
Wenn ich einen Unterordner namens selectors
für drawable
erstellen möchte, fügen Sie einen beliebigen Namen in die Variable resDirs
wie drawables
hinzu, dann sollte die Drawable-XML-Datei in res\drawables\selectors\drawable\xxx.xml
platziert werden.
Der Ordnernamen wie layouts
und drawables
ist in der Variablen resDirs
festgelegt, er kann beliebig sein. Alle von Ihnen erstellten Unterordner wie activity
oder selectors
werden wie der res
-Ordner behandelt. Also müssen wir im selectors
-Ordner zusätzlich einen drawable
-Ordner erstellen und die XML-Dateien in den drawable
-Ordner einfügen, danach kann Gradle die XML-Dateien normal als drawable erkennen.
0 Stimmen
Gleich wie: stackoverflow.com/questions/2547100/…
0 Stimmen
Ich denke, dieser Link könnte Ihnen weiterhelfen. blog.mindorks.com/…