Ich versuche, alle EditText
Inhalte in meiner Anwendung einheitlich zu gestalten. Mir ist bewusst, dass ich so etwas tun kann:
<style name="App_EditTextStyle">
<item name="android:background">@drawable/filled_roundededges_box_dark</item>
<item name="android:textColor">#808080</item>
<item name="android:layout_height">45dip</item>
</style>
Dann kann ich einen bestimmten EditText
Stil dazu bringen, dies zu tun:
<EditText ...
style="@style/App_EditTextStyle
...>
Auf diese Weise muss ich jedoch daran denken, den Stil für jeden einzelnen EditText
in meiner Anwendung individuell festzulegen, was mühsam, wenn nicht fehleranfällig ist.
Gibt es eine Möglichkeit, dies zu einem Teil eines Themas zu machen oder so? Dies ist so, dass ich diesen Stil nicht jedem zuordnen muss EditText
. So etwas wie dieser fiktive Codeblock:
<style name="App_Theme" parent="@android:style/Theme.Holo">
...
<item name="android:EditTextSyle">@style/App_EditTextStyle</item>
...
<style>
Und dann habe AndroidManifest.xml
ich in meinem so etwas wie:
<application
....
android:theme="@style/App_Theme">
Und Voila! Alle meine EditText
haben den konsistenten Stil, ohne dass ich den Stil für jede Instanz angeben muss.
layout_height/height
können dort nicht eingefügt werden, da Android wahrscheinlich vor den Stilen des Themas nach diesen Attributen sucht und sich darüber beschwert, dass sie fehlen. Aber eine benutzerdefinierte Zeichen- + andere Textfarbe funktioniert mit den oben genannten.edittextStyle
gilt nicht für einAutoCompleTextView
(obwohl es ein istEditText
). Schauen Sie sich dasautoCompleteTextViewStyle
Attribut in der Datei theme.xml an, das auf einenWidget.AutoCompleTextView
Stil in der Datei style.xml verweist .<item name="android:editTextStyle">
,<item name="editTextStyle">
ist es in Ordnung. Vielen Dank!@ Luksprog Antwort ist richtig, funktioniert aber nicht für mich. Nach einigen Experimenten stellte ich fest, dass das Entfernen des Android-Namespace aus editTextStyle für mich funktioniert.
und machen Sie Ihren benutzerdefinierten Stil zu erweitern
Widget.EditText
oder wenn Sie das AppCompat-Thema verwendenWidget.AppCompat.EditText
:quelle
AppCompat
Bibliothek zu tun haben . Erweitert sich Ihre AktivitätAppCompatActivity
? Oh, die Geheimnisse der Android-Entwicklung.AppCompat v7:21+
jetzt müssen die Standard- Themenattribute ohne das Präfix "android:" in den Stilen verwendet werden.Definieren Sie zunächst den Stil für Ihren EditText. Stellen Sie sicher, dass der übergeordnete Stil ist
android:Widget.EditText
Überschreiben Sie danach das Attribut
android:editTextStyle
in Ihrem benutzerdefinierten Design. Beachten Sie, dass Sie bei Verwendung der Support-Bibliothek auch das Attribut überschreiben müsseneditTextStyle
(ohne den Android-Namespace).quelle
Wenn Sie nur ein paar einfache Parameter wie die Textfarbe festlegen müssen, verfügt der Android-Namespace über einige Parameter, die dies tun, ohne dass ein separater Stil für den Bearbeitungstext deklariert werden muss. Z.B
quelle
editTextColor
und entfernenandroid:
.quelle