Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Fast alle Android-Anwendungen werden eine Art von Ressourcen enthalten; mindestens weisen sie häufig die Layouts der Benutzeroberfläche in Form von XML-Dateien auf. Wenn eine Xamarin.Android-Anwendung zum ersten Mal erstellt wird, werden Standardressourcen durch die Xamarin.Android-Projektvorlage eingerichtet:
Die fünf Dateien, aus denen die Standardressourcen bestehen, wurden im Ordner Resources erstellt:
Icon.png – Das Standardsymbol für die Anwendung
Main.axml : Die Standardlayoutdatei für die Benutzeroberfläche für eine Anwendung. Beachten Sie, dass während Android die Dateierweiterung.xml verwendet, Xamarin.Android die Dateierweiterung .axml verwendet.
Strings.xml – Eine Zeichenfolgentabelle, die bei der Lokalisierung der Anwendung hilft
AboutResources.txt : Dies ist nicht erforderlich und kann sicher gelöscht werden. Es bietet nur eine allgemeine Übersicht über den Ordner Resources und die darin enthaltenen Dateien.
Resource.designer.cs : Diese Datei wird automatisch von Xamarin.Android generiert und verwaltet und enthält die eindeutige ID, die jeder Ressource zugewiesen ist. Dies ist sehr ähnlich und identisch mit der R.java-Datei, die eine in Java geschriebene Android-Anwendung haben würde. Sie wird automatisch von den Xamarin.Android-Tools erstellt und von Zeit zu Zeit neu generiert.
Erstellen und Zugreifen auf Ressourcen
Das Erstellen von Ressourcen ist so einfach wie das Hinzufügen von Dateien zum Verzeichnis für den betreffenden Ressourcentyp. Der folgende Screenshot zeigt Zeichenfolgenressourcen für deutsche Gebietsschemas, die einem Projekt hinzugefügt wurden. Wenn Strings.xml der Datei hinzugefügt wurde, wurde die Buildaktion von den Xamarin.Android-Tools automatisch auf AndroidResource festgelegt:
Dadurch können die Xamarin.Android-Tools die Ressourcen ordnungsgemäß kompilieren und in die APK-Datei einbetten. Wenn die Buildaktion aus irgendeinem Grund nicht auf Android-Ressource festgelegt ist, werden die Dateien aus dem APK ausgeschlossen, und jeder Versuch, die Ressourcen zu laden oder darauf zuzugreifen, führt zu einem Laufzeitfehler, und die Anwendung stürzt ab.
Außerdem ist es wichtig zu beachten, dass Android zwar nur klein geschriebene Dateinamen für Ressourcenelemente unterstützt, Xamarin.Android jedoch etwas verzeihlicher ist. Es unterstützt sowohl Groß- als auch Kleinbuchstaben von Dateinamen. Die Konvention für Bildnamen besteht darin, Kleinbuchstaben mit Unterstrichen als Trennzeichen zu verwenden (z. B.my_image_name.png). Beachten Sie, dass Ressourcennamen nicht verarbeitet werden können, wenn Bindestriche oder Leerzeichen als Trennzeichen verwendet werden.
Nachdem Ressourcen einem Projekt hinzugefügt wurden, gibt es zwei Möglichkeiten, sie in einer Anwendung zu verwenden: programmgesteuert (im Code) oder aus XML-Dateien.
Programmgesteuertes Verweisen auf Ressourcen
Für den programmgesteuerten Zugriff auf diese Dateien wird ihnen eine eindeutige Ressourcen-ID zugewiesen. Diese Ressourcen-ID ist eine ganze Zahl, die in einer speziellen Klasse namens Resource
definiert ist, die sich in der Datei Resource.designer.cs befindet und in etwa wie folgt aussieht:
public partial class Resource
{
public partial class Attribute
{
}
public partial class Drawable {
public const int Icon=0x7f020000;
}
public partial class Id
{
public const int Textview=0x7f050000;
}
public partial class Layout
{
public const int Main=0x7f030000;
}
public partial class String
{
public const int App_Name=0x7f040001;
public const int Hello=0x7f040000;
}
}
Jede Ressourcen-ID ist in einer geschachtelten Klasse enthalten, die dem Ressourcentyp entspricht. Wenn beispielsweise die Datei Icon.png dem Projekt hinzugefügt wurde, hat Xamarin.Android die Resource
Klasse aktualisiert und eine geschachtelte Klasse namens Drawable
mit einer Konstanten namens erstellt Icon
.
Dadurch kann die Datei Icon.png im Code als Resource.Drawable.Icon
bezeichnet werden. Die Resource
-Klasse sollte nicht manuell bearbeitet werden, da alle daran vorgenommenen Änderungen von Xamarin.Android überschrieben werden.
Beim programmgesteuerten Verweisen auf Ressourcen (im Code) kann über die Ressourcenklassenhierarchie zugegriffen werden, die die folgende Syntax verwendet:
[<PackageName>.]Resource.<ResourceType>.<ResourceName>
PackageName : Das Paket, das die Ressource bereitstellt und nur erforderlich ist, wenn Ressourcen aus anderen Paketen verwendet werden.
ResourceType : Dies ist der geschachtelte Ressourcentyp, der sich innerhalb der oben beschriebenen Resource-Klasse befindet.
Ressourcenname : Dies ist der Dateiname der Ressource (ohne Erweiterung) oder der Wert des android:name-Attributs für Ressourcen, die sich in einem XML-Element befinden.
Verweisen auf Ressourcen aus XML
Auf Ressourcen in einer XML-Datei wird mithilfe einer speziellen Syntax zugegriffen:
@[<PackageName>:]<ResourceType>/<ResourceName>
PackageName : Das Paket, das die Ressource bereitstellt und nur erforderlich ist, wenn Ressourcen aus anderen Paketen verwendet werden.
ResourceType : Dies ist der geschachtelte Ressourcentyp, der sich innerhalb der Resource-Klasse befindet.
Ressourcenname : Dies ist der Dateiname der Ressource (ohne Dateityperweiterung) oder der Wert des
android:name
Attributs für Ressourcen, die sich in einem XML-Element befinden.
Beispielsweise lautet der Inhalt einer Layoutdatei, Main.axml, wie folgt:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/myImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/flag" />
</LinearLayout>
In diesem Beispiel ist ein ImageView
-Steuerelement enthalten, das eine ziehbare Ressource mit dem Namen Flag erfordert. Das ImageView
-Attribut ist src
auf @drawable/flag
festgelegt. Wenn die Aktivität gestartet wird, sucht Android im Verzeichnis Resource/Drawable nach einer Datei mit dem Namen flag.png (die Dateierweiterung könnte ein anderes Bildformat sein, z . B.flag.jpg), lädt diese Datei und zeigt sie in an ImageView
.
Wenn diese Anwendung ausgeführt wird, sieht sie in etwa wie die folgende Abbildung aus: