/ / Android - Attribute verwenden, um benutzerdefinierte Stile anzupassen - Android, Attribute, Stile, Designs

Android - Verwenden Sie Attribute, um benutzerdefinierte Stile zu optimieren - Android, Attribute, Stile, Themen

Hier ist meine Ausgabe. Ich habe benutzerdefinierte Themen und Stile definiert, um verschiedene Ansichten in den relevanten XML-Dateien anzupassen. Hier einige Code-Extrakte:

themes.xml:

...
<style name="Legacy" parent="android:Theme.NoTitleBar">
<item name="android:buttonStyle">@style/Legacy.Button</item>
...
</style>

styles.xml:

...
<style name="Legacy.Button" parent="@android:style/Widget.Button">
<item name="android:textColor">#ffffff</item>
<item name="android:background">@drawable/button_selector_blue</item>
<item name="android:textSize">15dp</item>
</style>

Angenommen, ich setze das Thema meiner Bewerbung auf "Vermächtnis". Wenn ich einen Button in einem Layout verwende, erhält er meine benutzerdefinierten Standardparameter (weißer Text, Hintergrund ist @ drawable / button_selector_blue usw.).

Angenommen, ich möchte diese Parameter für die Textgröße aufbewahren: Ich hätte gerne einige Schaltflächen mit einer größeren Textgröße, die in einem Attribut titleSize in attrs.xml definiert werden würden:

...
<attr name="titleSize" format="reference|dimension" />

und welcher Wert für jedes Thema in meiner Datei themes.xml festgelegt ist.

Mein Layout würde also Folgendes enthalten:

<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="?titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>

Beim Starten meiner App erhalte ich folgende Fehlermeldung: java.lang.UnsupportedOperationException: Kann nicht in dimension konvertiert werden: type = 0x2

Es scheint also, dass ich benutzerdefinierte Stile nicht mit Attributen optimieren kann - zumindest nicht auf diese Weise. Ist so etwas möglich ? Wenn nicht, was würden Sie verwenden, um ein solches Ergebnis zu erzielen?

Ich möchte dem Benutzer die Möglichkeit geben, zwischen verschiedenen Themen auszuwählen, sodass ich nicht einfach einen zusätzlichen ButtonWithLargeText-Stil definieren und direkt in meinem Layout verwenden kann.

Danke für Ihre Hilfe !

Antworten:

0 für die Antwort № 1

Ich habe es endlich geschafft. Anstatt die Größe der Titel in attrs.xml zu definieren, habe ich dimens.xml verwendet. Nun funktioniert das folgende:

<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="@dimen/titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>

Während ich meine normale Textgröße (die ich in meiner styles.xml definiert habe) auf den Button bekomme, indem ich Folgendes benutze

<Button
android:id="@+id/idRegularButton"
android:text="@string/regularSizeText"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</Button>