628 Stimmen

Können im Android-Layoutordner Unterordner enthalten sein?

Aktuell speichere ich jede XML-Layoutdatei im Ordner 'res/layout', um kleine Projekte einfach und übersichtlich verwalten zu können. Bei großen und umfangreichen Projekten ist jedoch eine Hierarchie und Unterordner im Layout-Ordner erforderlich.

zum Beispiel

layout
-- layout_personal
   -- personal_detail.xml
   -- personal_other.xml
--layout_address
  -- address1.xml
  -- address2.xml

Auf die gleiche Weise möchten wir Unterordner für die große Anwendung haben, gibt es eine Möglichkeit, dies im Android-Projekt zu tun?

Ich kann Unterordner layout-personal und layout_adress innerhalb des layout-Ordners erstellen, aber wenn es darum geht, auf die XML-Layoutdatei mit R.layout._______ zuzugreifen, wird keine XML-Layoutdatei im Menü angezeigt.

0 Stimmen

0 Stimmen

Ich denke, dieser Link könnte Ihnen weiterhelfen. blog.mindorks.com/…

1voto

O Thạnh Ldt Punkte 829
  • Schritt 1: Klicken Sie mit der rechten Maustaste auf das Layout - Im Explorer anzeigen
  • Schritt 2: Öffnen Sie den Layout-Ordner und erstellen Sie die Unterordner direkt: layout_1, layout_2 ...
  • Schritt 3: Öffnen Sie layout_1, erstellen Sie den Ordner layout (Hinweis: Der obligatorische Name lautet layout), öffnen Sie den Ordner layout_2, erstellen Sie das Unterordner layout (Hinweis: Der obligatorische Name lautet layout) ...
  • Schritt 4: Kopieren Sie die XML-Dateien in die Layout-Unterordner in layout_1 und layout_2
  • Schritt 5: Führen Sie den Code in buid.grade (Modul app) aus und klicken Sie auf Jetzt synchronisieren:

sourceSets {
    main {
        res.srcDirs =
            [
                'src / main / res / layout / layout_1'
                'src / main / res / layout / layout_2',
                'src / main / res'
            ]
    }
}
  • Schritt 6: Zusammenfassung: Alle oben genannten Schritte dienen nur dazu, Dateien zu gruppieren und im "Projekt"-Modus anzuzeigen, während der "Android"-Modus wie gewohnt angezeigt wird.
  • Also denke ich, dass das Benennen von Präfixen genauso effektiv ist wie das Gruppieren von Ordnern.

0 Stimmen

Vielen Dank für den Projekt Modus. Ich verstehe nicht, wo die Unterordner verschwunden sind (im Android Modus).

1voto

netcyrax Punkte 1039

Kann keine Unterverzeichnisse (einfach) haben, aber Sie können zusätzliche Ressourcenordner haben. Überraschend hat es noch niemand erwähnt, aber um die Standardressourcenordner beizubehalten und noch einige hinzuzufügen:

    sourceSets {
        main.res.srcDirs += ['src/main/java/XYZ/ABC']
    }

0voto

sravan953 Punkte 181

Nun, die kurze Antwort ist nein. Aber du kannst definitiv mehrere res-Ordner haben. Ich denke, das ist so nah wie möglich daran, Unterordner für den layout-Ordner zu haben. Hier ist, wie du es machst.

1 Stimmen

Überprüfen Sie die akzeptierte Antwort. Ich habe es persönlich nicht ausprobiert, aber wenn Sie es überprüfen und aktualisieren können, wäre das hilfreich!

0voto

CoolMind Punkte 21914

Top-Antworten haben mehrere Nachteile: Sie müssen neue Layout-Pfade hinzufügen, AS platziert neue Ressourcen im res\layouts Ordner anstelle von res\values.

Indem ich mehrere Antworten kombiniere, habe ich Ähnliches geschrieben:

sourceSets {
    main {
        res.srcDirs =
                [
                        'src/main/res',
                        file("src/main/res/layouts/").listFiles(),
                        'src/main/res/layouts'
                ]
    }
}

Ich habe Ordner mit diesem Artikel erstellt: http://alexzh.com/tutorials/how-to-store-layouts-in-different-folders-in-android-project/. Um Unterordner zu erstellen, sollten Sie dieses Menü verwenden: Neu > Ordner > Res-Ordner.

UPDATE

Nach ein paar Wochen habe ich festgestellt, dass Änderungen an Ressourcen von Android Studio nicht bemerkt werden. Daher treten einige seltsame Fehler auf. Zum Beispiel zeigen Layouts weiterhin alte Größen, Abstände. Manchmal findet AS neue XML-Dateien nicht (besonders während der Laufzeit). Manchmal werden View-IDs verwechselt (Verweise auf eine andere XML-Datei). Es ist oft erforderlich, auf Build > Clean Project oder Build > Rebuild Project zu klicken. Lesen Sie Neuerstellung erforderlich nach Ändern von XML-Layoutdateien in Android Studio.

0 Stimmen

Dein Kommentar "Ich habe Ordner mit diesem Artikel erstellt (angehängter Link)" ist keine akzeptable Art, hier auf S.O. Lösungen bereitzustellen. Deine Antwort ist vage. Du kannst Anweisungen hinterlassen und dem Autor mit einem Link Anerkennung geben. Ansonsten ist das einfach nur faul.

0 Stimmen

@jungledev, nun, ich habe schließlich diese Idee abgelehnt und bin zu einem traditionellen res Ordner zurückgekehrt, da AS die Ressourcen nicht vollständig in Ordner unterteilt unterstützt. Wahrscheinlich werde ich diese Antwort ändern oder sogar löschen. Aber was meinen Sie damit, wenn Sie sagen, dass es keine akzeptable Art ist, hier auf S.O. Lösungen bereitzustellen?

0 Stimmen

Ich meine genau das, was ich gesagt habe. Sag nicht "Ich habe es mit diesem Tutorial gemacht.... (Link einfügen)". Was du sagen solltest ist: "Ich habe diesem Tutorial (Link einfügen) gefolgt und hier sind die Schritte, die für mich funktioniert haben. Schritt 1, Schritt 2, Schritt 3... usw." Du musst die Schritte HIER in der Antwort einschließen. Einfach auf ein Tutorial zu verlinken, ist inakzeptabel.

0voto

Braian Coronel Punkte 19992

Innerhalb eines Moduls ist es wichtig zu beachten, dass bei der Kombination von Geschmacksrichtungen, Ressourcen für Geschmacksrichtungen (Layout, Werte) und Ressourcenressourcen für Geschmacksrichtungen zwei Dinge im Vordergrund stehen:

  1. Beim Hinzufügen von Ressourcenverzeichnissen in res.srcDirs für Geschmacksrichtungen ist zu beachten, dass in anderen Modulen und sogar in src/main/res des gleichen Moduls ebenfalls Ressourcenverzeichnisse hinzugefügt werden. Daher ist es wichtig, eine Ergänzungszuweisung (+=) zu verwenden, um nicht alle vorhandenen Ressourcen mit der neuen Zuweisung zu überschreiben.

  2. Der Pfad, der als Element des Arrays deklariert ist, enthält die Ressourcentypen, das heißt, die Ressourcentypen sind alle Unterverzeichnisse, die ein res-Ordner normalerweise enthält, wie z.B. farbe, drawable, layout, werte usw. Der Name des res-Ordners kann geändert werden.

Ein Beispiel wäre die Verwendung des Pfads "src/flavor/res/values/strings-ES", beachten Sie jedoch, dass die Praxishierarchie das Unterverzeichnis values enthalten muss:

 modul 
    flavor
       res
          values
             strings-ES
                values
                   strings.xml
                strings.xml

Das Framework erkennt Ressourcen genau nach Typ, daher dürfen normalerweise bekannte Unterverzeichnisse nicht weggelassen werden.

Bitte beachten Sie auch, dass alle strings.xml Dateien, die innerhalb des Geschmacks liegen, eine Vereinigung bilden, sodass Ressourcen nicht dupliziert werden können. Und diese Vereinigung, die eine Datei im Geschmack bildet, hat eine höhere Präzedenz vor dem Hauptteil des Moduls.

flavor {
        res.srcDirs += [
            "src/flavor/res/values/strings-ES"
        ]
}

Betrachten Sie das Verzeichnis strings-ES als benutzerdefiniertes res, das die Ressourcentypen enthält.

GL

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X