Kann der Android-Layoutordner Unterordner enthalten?

Lesezeit: 9 Minuten

Kann der Android Layoutordner Unterordner enthalten
Gemeinde Mayani

Im Moment speichere ich jede XML-Layoutdatei im Ordner „res/layout“, sodass es machbar und einfach ist, kleine Projekte zu verwalten, aber wenn es sich um große und umfangreiche Projekte handelt, sollte es eine Hierarchie geben und Unterordner, die im Layoutordner benötigt werden.

für zB

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 also eine Möglichkeit, dies innerhalb des Android-Projekts zu tun?

Ich kann Layout-Personal- und Layout_Address-Unterordner im Layout-Ordner erstellen, aber wenn es an der Zeit ist, mit R.layout._______ auf die XML-Layout-Datei zuzugreifen, gibt es zu diesem Zeitpunkt kein XML-Layout-Popup in der Speisekarte.

  • Gleich wie: stackoverflow.com/questions/2547100/…

    – Sebastian Roth

    8. Februar 2011 um 7:10 Uhr

  • Ich denke, dieser Link könnte Ihnen im Detail helfen. blog.mindorks.com/…

    – Dilip Poudel

    24. September 2017 um 6:31 Uhr

Kann der Android Layoutordner Unterordner enthalten
Eski

Sie können dies mit Gradle tun. Ich habe eine gemacht Demo-Projekt zeigen wie.

Der Trick besteht darin, die Fähigkeit von Gradle zu nutzen mehrere Ressourcenordner zusammenführenund legen Sie den Ordner res sowie die verschachtelten Unterordner im Block sourceSets fest.

Die Besonderheit besteht darin, dass Sie einen Container-Ressourcenordner nicht deklarieren können, bevor Sie die untergeordneten Ressourcenordner dieses Ordners deklarieren.

Unten ist der sourceSets-Block aus der build.gradle-Datei aus der Demo. Beachten Sie, dass die Unterordner zuerst deklariert werden.

sourceSets {
    main {
        res.srcDirs =
        [
                'src/main/res/layouts/layouts_category2',
                'src/main/res/layouts',
                'src/main/res'
        ]
    }
}

verschachteltes Ressourcenbild

Außerdem muss das direkte übergeordnete Element Ihrer tatsächlichen Ressourcendateien (PNGs, XML-Layouts usw.) immer noch mit dem übereinstimmen Spezifikation.

  • Ist dies mit den ausziehbaren Ordnern möglich? Ich habe es gerade vergeblich versucht, selbst unter Berücksichtigung der Deklarationsreihenfolge.

    – Telkins

    31. März 2014 um 21:22 Uhr

  • Hübsch! Denken Sie nur daran, dass Sie wirklich nur die Fähigkeit von Gradle ausnutzen verschmelzen Ressourcenordner und es wird Sinn machen.

    – eski

    1. April 2014 um 16:18 Uhr

  • Die Dateinamen im Ordner müssen weiterhin eindeutig sein und im Code muss man wissen, dass zB R.layout.list_item kommt aus der movies oder der cinemas Ordner, so dass die flache Benennung immer noch gilt.

    – TWiStErRob

    19. Oktober 2014 um 22:32 Uhr

  • Leider funktioniert das bei mir nicht mit build:gradle:0.14.4 und buildToolsVersion "21.1.1".

    – Kamil Lelonek

    21. November 2014 um 9:59 Uhr

  • Das funktioniert, aber die Antwort tut a erbärmlich unangemessene Aufgabe zu erklären, dass jeder Unterordner, den Sie hinzufügen, eine haben muss Sekunde Unterordner darin, der nur “Layout” heißen kann, und alle Ihre Layout-Dateien müssen in den Ordner ” Sekunde Unterordner(n). Sich Dutzende von Kommentaren durchzulesen, um das herauszufinden, ist alles andere als ideal. Und für alle, die noch suchen, ist das Einrichten der zusätzlichen “Layout” -Unterordner die Lösung für das Problem URI is not registered Problem.

    – aroth

    18. August 2016 um 6:45 Uhr


1646632995 174 Kann der Android Layoutordner Unterordner enthalten
100rabh

Die Antwort ist nein.

Ich möchte Ihre Aufmerksamkeit auf dieses Buch lenken Pro Android 2 das besagt:

Es ist auch erwähnenswert, einige Einschränkungen in Bezug auf die Ressourcen zu beachten. Erstens unterstützt Android nur eine lineare Liste von Dateien innerhalb der vordefinierten Ordner unter res. Zum Beispiel es
unterstützt keine verschachtelten Ordner unter dem Layoutordner (oder die anderen Ordner unter res).

Zweitens gibt es einige Ähnlichkeiten zwischen dem Assets-Ordner und dem Raw-Ordner unter res. Beide Ordner können RAW-Dateien enthalten, aber die Dateien in RAW werden als Ressourcen betrachtet und die Dateien in Assets nicht.

Beachten Sie, dass der Inhalt der
Vermögenswerte Ordner werden nicht als Ressourcen betrachtet, Sie können einen setzen willkürliche Hierarchie von Ordnern und Dateien darin
es.

  • Ich schätze, unsere nächstbeste Hoffnung wäre ein Eclipse- oder IntelliJ-Plugin, das die Dateien basierend auf Dateinamenpräfixen reduzieren könnte.

    – Jerry Brady

    5. Februar 2014 um 21:24 Uhr

  • @Justin schau dir die Lösung an, die ich für Gradle gepostet habe.

    – eski

    16. März 2014 um 15:26 Uhr

  • Ich denke, eine Lösung könnte darin bestehen, die Dateien so zu benennen, wie Sie sie kategorisieren möchten, sodass es so aussieht, als wären sie in Unterordnern. Ich füge am Anfang des Namens ein “Unterordner-Tag” hinzu. Zum Beispiel. alle Aktivitäten wären „activity_activityname.xml“ und eine untergeordnete Aktivität könnte „activity_activityname_childactivity.xml“ sein und so weiter. Jede andere Datei wäre “other_filename.xml”. Das mache ich, um Verwirrung zu vermeiden. Verdammt, jemand ist mir zuvorgekommen. Um drei Jahre >.< Meine Güte, das hatte ich noch nicht gesehen.

    – Vedavyas Bhat

    19. April 2014 um 3:10 Uhr


  • Es ist wichtig, hier zu beachten, dass durch Überlegung raw als ressourcen bekommst du dichte/orientierung/version/etc abhängiges striping, während mit assets das musst du manuell machen.

    – TWiStErRob

    19. Oktober 2014 um 22:26 Uhr

  • Wählte diese Antwort als Argument gegen den Kampf gegen den Android-Mainstream.

    – Zon

    24. Mai 2017 um 3:41 Uhr

Ich wollte nur die fantastische Antwort von eskis für Leute mit Problemen ergänzen. (Hinweis: Dies funktioniert nur und sieht wie separate Verzeichnisse in der „Projekt“-Ansicht aus, leider nicht in der „Android“-Ansicht.)

Getestet mit folgendem. BuildToolsVersion = 23.0.0 Gradle 1.2.3 & 1.3.0

So habe ich meins dazu gebracht, mit einem bereits gebauten Projekt zu arbeiten.

  1. Kopieren Sie alle XML-Dateien aus Ihrem Layout-Verzeichnis und legen Sie sie in ein Verzeichnis auf dem Desktop oder etwas zur Sicherung.
  2. Löschen Sie das gesamte Layout-Verzeichnis (Stellen Sie sicher, dass Sie alles von Schritt 1 gesichert haben !!!)
  3. Klicken Sie mit der rechten Maustaste auf das res-Verzeichnis und wählen Sie neu > Verzeichnis.
  4. Benennen Sie dieses neue Verzeichnis “Layouts”. (Dies kann alles sein, was Sie wollen, aber es wird kein ‘Fragment’-Verzeichnis oder ‘Aktivitäts’-Verzeichnis sein, das später kommt).
  5. Klicken Sie mit der rechten Maustaste auf das neue Verzeichnis „Layouts“ und wählen Sie „Neu“ > „Verzeichnis“. (Dies ist der Name des XML-Dateityps, den Sie darin haben werden, z. B. „Fragmente“ und „Aktivitäten“).
  6. Klicken Sie mit der rechten Maustaste auf das Verzeichnis „Fragment“ oder „Aktivitäten“ (Hinweis: Dies muss nicht „Fragment“ oder „Aktivitäten“ sein, das verwende ich nur als Beispiel) und wählen Sie erneut „Neu“ > „Verzeichnis“ und benennen Sie dieses Verzeichnis “Layout”. (Hinweis: Dieses MUSS ‘Layout’ heißen!!! sehr wichtig).
  7. Legen Sie die gewünschten XML-Dateien in das neue „Layout“-Verzeichnis aus der Sicherung, die Sie auf Ihrem Desktop erstellt haben.
  8. Wiederholen Sie die Schritte 5 bis 7 für beliebig viele benutzerdefinierte Verzeichnisse.
  9. Sobald dies abgeschlossen ist, gehen Sie in die gradle.build-Datei Ihres Moduls und erstellen Sie eine sourceSets-Definition wie diese … (Stellen Sie sicher, dass ‘src/main/res/layouts’ und ‘src/main/res’ immer die unteren beiden sind !! !! Wie ich unten zeige).

    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'
                    ]
        }
    }
    
  10. Gewinnen Sie $$$$

Aber im Ernst … so habe ich es zum Laufen gebracht. Lassen Sie mich wissen, wenn jemand Fragen hat. Ich kann versuchen zu helfen.

Bilder sind mehr wert als Worte.

Verzeichnisaufbau

  • Was ist mit Layout-Verzeichnissen wie z layout-v21?

    – Akshay Chordiya

    7. September 2015 um 17:05 Uhr

  • Ich habe es nicht getestet, aber ich würde mir vorstellen, dass Sie neben den Layout-Ordnern einfach einen Layout-v21-Ordner erstellen.

    – Nik H

    7. September 2015 um 17:07 Uhr

  • Funktioniert auf Gradle 2.0.0 und buildToolsVersion 23.0.2! Beachten Sie, dass der Konfigurationswert ist 'src/main/res/layouts/content' und der Pfad dieser Konfiguration ist 'src/main/res/layouts/content/layout'

    – cwsu

    14. April 2016 um 9:14 Uhr

  • Ich habe ein Problem mit diesem stackoverflow.com/questions/41934004/…

    – Petra Barus

    30. Januar 2017 um 10:49 Uhr

  • Nach einer Weile ohne Glück gesucht, ist dies die einzige Lösung, die für mich funktioniert hat. Vielen Dank, dass Sie eine so ausführliche Antwort mit Bildern gepostet haben!

    – Maschinenstamm

    30. März 2017 um 14:54 Uhr

Nicht möglich, aber der Layoutordner ist nach Namen sortiert. Also stelle ich den Layout-Dateinamen meine Paketnamen voran. ZB für die beiden Pakete “Kaufen” und “Spielen”:

buying_bought_tracks.xml
buying_buy_tracks.xml
playing_edit_playlist.xml
playing_play_playlist.xml
playing_show_playlists.xml

Kann der Android Layoutordner Unterordner enthalten
Scharf

ich benutze Gruppierung von Android-Dateien Plugin für Android Studio. Es erlaubt Ihnen nicht wirklich, Unterordner zu erstellen, aber es kann Ihre Dateien und Ressourcen ANZEIGEN, WIE sie sich in verschiedenen Ordnern befinden. Und das ist genau das, was ich wollte.

Sie können das Plugin “Android File Grouping” installieren, indem Sie

Fenster:

Android Studio -> Datei -> Einstellungen -> Plugins.

Mac:

Android Studio -> Registerkarte Android Studio (oben links) -> Einstellungen -> Plugins -> JetBrains-Plugin installieren..

Für Mac konnte ich es testen und konnte nicht nach dem Plugin suchen. Also habe ich das Plugin von heruntergeladen Hier und verwendet die Install plugin from disk Option aus der obigen Einstellung.

  • Teilen Sie auch den Link dieses Plugins!

    – Gemeinde Mayani

    28. August 2015 um 7:18 Uhr

  • Getan. Wie auch immer, Sie können immer in Android Studio -> Datei -> Einstellungen -> Plugins nach “Android File Grouping” suchen

    – Scharf

    28. August 2015 um 10:15 Uhr

  • Das Plugin funktionierte nicht in der “Android”-Ansicht, nur in der “Projekt”-Ansicht :/

    – Hugo Gresse

    24. März 2016 um 10:59 Uhr

1646632999 232 Kann der Android Layoutordner Unterordner enthalten
botbot

Ich denke, die eleganteste Lösung für dieses Problem (da Unterordner nicht erlaubt sind) besteht darin, den Dateinamen den Namen des Ordners voranzustellen, in dem Sie ihn abgelegt hätten. Wenn Sie beispielsweise eine Reihe von Layouts für eine Aktivität, ein Fragment oder nur eine allgemeine Ansicht mit dem Namen “Orte” haben, sollten Sie dieser einfach den Namen “places_my_layout_name” voranstellen. Dies löst zumindest das Problem, sie so zu organisieren, dass sie in der IDE leichter zu finden sind. Es ist nicht die beste Lösung, aber besser als nichts.

  • Teilen Sie auch den Link dieses Plugins!

    – Gemeinde Mayani

    28. August 2015 um 7:18 Uhr

  • Getan. Wie auch immer, Sie können immer in Android Studio -> Datei -> Einstellungen -> Plugins nach “Android File Grouping” suchen

    – Scharf

    28. August 2015 um 10:15 Uhr

  • Das Plugin funktionierte nicht in der “Android”-Ansicht, nur in der “Projekt”-Ansicht :/

    – Hugo Gresse

    24. März 2016 um 10:59 Uhr

Mit Android Studio und Gradle können Sie jetzt mehrere Ressourcenordner in Ihrem Projekt haben. So können Sie nicht nur Ihre Layoutdateien, sondern jede Art von Ressourcen organisieren.

Es ist nicht gerade ein Unterordner, kann aber Teile Ihrer Anwendung trennen.

Die Konfiguration ist wie folgt:

sourceSets {
    main {
        res.srcDirs = ['src/main/res', 'src/main/res2']
    }
}

Überprüf den Dokumentation.

  • Mir ist aufgefallen, dass ich jedes Mal, wenn ich unter dieser Einstellung Änderungen an einem Layout vorgenommen habe, immer eine tun musste clean um es in der App zu sehen.

    – Pawan Kumar

    18. Juni 2015 um 8:50 Uhr


963400cookie-checkKann der Android-Layoutordner Unterordner enthalten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy