style="@style/..." in Java setzen ???

  • Antworten:4
Marco S.
  • Forum-Beiträge: 105

20.09.2010, 15:13:13 via Website

Hallo,

ich hab einen Style:

1<style name="button_back">
2 <item name="android:background">@drawable/btn_back</item>
3 <item name="android:textSize">20dip</item>
4 <item name="android:textStyle">bold</item>
5 <item name="android:textColor">#ffffff</item>
6 <item name="android:layout_marginTop">10dip</item>
7 <item name="android:text">Abbrechen</item>
8 </style>

Im XML referenziere ich dann diesen Style:

1<Button android:layout_width="fill_parent"
2 android:layout_height="wrap_content" style="@style/button_back" />

Jetzt will ich das ganze in Java machen.

Kann mir jemand sagen wo ich da den Setter für finde?

Manches ist einfach unglaublich versteckt :)

Viele Grüße
Marco

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

20.09.2010, 20:10:39 via Website

Hab ich auch schon mal lange nach gesucht, und nichts gefunden. Bin dann nach längerem Nachdenken aber auch mit mir selbst übereingekommen, dass das wohl auch besser so ist, da Logik und Layout dann doch besser voneinander getrennt bleiben.

Gruß,

Thomas

Antworten
Marco S.
  • Forum-Beiträge: 105

13.03.2012, 11:51:28 via Website

Die Lösung ist eigentlich einfach, wenn man sie kennt.

Man erzeugt einen Style, ein Theme mit einem Item, welches in Attrs definiert wird und den Style referenziert.

Dann kann man im Konstruktor vom View (3. Parameter) einfach die Stylereferenz benutzen:

http://stackoverflow.com/questions/8369504/why-so-complex-to-set-style-from-code-in-android

Viele Grüße,
Marco

Antworten
Felix
  • Forum-Beiträge: 259

13.03.2012, 22:22:09 via Website

Tach!

Marco S.
Die Lösung ist eigentlich einfach, wenn man sie kennt. Man erzeugt einen Style, ein Theme mit einem Item, welches in Attrs definiert wird und den Style referenziert. Dann kann man im Konstruktor vom View (3. Parameter) einfach die Stylereferenz benutzen:

So einfach ist die Sache nun auch wieder nicht. Wenn du einen Button (gilt auch für andere (alle?) View-Elemente) neu stylen willst, musst du den alten wegwerfen und einen ganz neuen erstellen, denn nur so kommst du dazu, den Konstruktor aufzurufen. Das ist dann quasi genauso „zur Laufzeit“ wie das was Android beim Inflaten eines Layout-XMLs macht. Man könnte also auch ein zweites Layout mit dem anderen Style erstellen, und dieses zur Laufzeit mit dem Inflater reinholen.


Felix.

Antworten