568 Stimmen

Kann das Android Drawable-Verzeichnis Unterverzeichnisse enthalten?

In der Android SDK-Dokumentation werden in allen Beispielen, die mit der xml-Syntax @drawable/my_image verwendet werden, direkt Bilder angesprochen, die im Verzeichnis res/drawable in meinem Projekt gespeichert sind.

Ich frage mich, ob es explizit nicht in Ordnung ist, ein Unterverzeichnis innerhalb des drawable-Verzeichnisses zu erstellen.

Wenn ich zum Beispiel das folgende Verzeichnislayout hätte:

res/drawable
-- sandwiches
  -- tunaOnRye.png
  -- hamAndSwiss.png
-- drinks
  -- coldOne.png
  -- hotTea.png

Kann ich das Bild eines Thunfischsalat-Sandwiches als @drawable/sandwiches/tunaOnRye referenzieren?

Oder muss ich die Hierarchie im Verzeichnis der Zeichnungselemente flach halten?

1voto

user3177928 Punkte 11

Dies sind keine perfekten Methoden. Sie müssen die gleiche Art und Weise implementieren, die Anzeige ist ici .

Sie können auch das Bild unter dem Ordner durch den Code aufrufen, den Sie verwenden können

Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);

1voto

Captnwalker1 Punkte 620

Nicht meine, aber ich fand diesen Thread bei der Suche nach diesem Problem, wenn Ihr mit Android Studio und Gradle Build-System seine ziemlich einfach keine Plugins notwendig nur ein wenig Build-Datei bearbeiten

https://stackoverflow.com/a/22426467/618419

1voto

user3290180 Punkte 3950

Gradle mit Android Studio könnte es auf diese Weise tun ( lien ).

Er befindet sich im Abschnitt "Konfigurieren der Struktur".

sourceSets {
 main {
    java {
        srcDir 'src/java'
    }
    resources {
        srcDir 'src/resources'
    }
 }
}

1voto

Ali Bagheri Punkte 2436

Einen Ordner in main erstellen. wie: 'res_notification_btn'

und erstellen Sie einen Baumordner in. wie 'drawable' oder 'layout'

dann in 'build.gradle' folgendes hinzufügen

sourceSets
            {
                main
                {
                    res
                    {
                        srcDirs = ['src/main/res_notification_btn', 'src/main/res']
                      or
                        srcDir 'src/main/res_notification_btn'
                    }
                }
            }

0voto

dtim Punkte 31

Für alle, die Xamarin verwenden (entweder Xamarin.Android oder Xamarin.Forms), gibt es eine Möglichkeit, dies zu tun.

In der .csproj-Datei für das Android-Projekt finden Sie die Zeile für MonoAndroidResourcePrefix (dokumentiert, wenn auch eher dürftig, ici ). Fügen Sie hier die Unterverzeichnisse ein, die Sie verwenden möchten, und trennen Sie die einzelnen Einträge durch Semikolon. Beim Erstellen entfernt Visual Studio diese Präfixe, damit alle Ressourcen in einer flachen Hierarchie landen. Möglicherweise müssen Sie die Projektmappe nach diesen Änderungen neu laden.

Example of setup in Xamarin

Diese Verzeichnisse müssen keine Unterverzeichnisse des Standard-Ressourcenverzeichnisses im Projekt sein.

Stellen Sie sicher, dass die hinzugefügten Dateien die Build-Aktion "AndroidResource" erhalten.

Bei Xamarin.Android erkennt der visuelle Editor keine Bilder und zeigt den Fehler "Diese Ressourcen-URL kann nicht aufgelöst werden", aber das Projekt wird erstellt und das Bild ist zur Laufzeit sichtbar.

Error in editor Example in emulator

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