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 № 1Ich 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>