2010-11-27 4 views
0

Ich habe einen benutzerdefinierten Stil, den ich gerne auf meine Ansichten anwenden würde. Ich konnte meine Ansichten nicht programmatisch erstellen, nicht über XML, da es sich um eine dynamische Inhaltsmenge handelt (dieselbe Ansicht kann X-mal angezeigt werden, aber nicht mehr als 10, also möchte ich keine Liste).lesen android style xml

Wenn ich einen XmlPullParser des Stils bekommen kann, kann ich einfach AttributeSet attrs = Xml.asAttributeSet(parser); verwenden und an den C'tor des Views übergeben. Das Problem besteht darin, den XmlPullParser zu erhalten. getresources(). GetX hat keine getStyle() -Methode. Vielleicht bin ich nur falsch. Hat jemand eine Idee, wie man den Stil auf eine programmatische Ansicht anwendet?

10x.

ok, habe ich versucht, den dritten C'tpr Parameter Ansatz:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    TextView tv = new TextView(this, null, R.style.my_style_2); 
    tv.setText("this should be green!"); 
    setContentView(tv); 
} 

und den Stil:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="my_style_2"> 
     <item name="android:textColor">#FF00FF00</item> 
     <item name="android:textSize">20sp</item> 
    </style> 
</resources> 

Ich habe nicht großen grünen Text. Ich bekomme Standardgröße grauer Text ...

Antwort

2

Ok. Eine andere Möglichkeit wäre, die Ansicht programmgesteuert zu erstellen und den style-Parameter im Konstruktor zu verwenden:

ZB: TextView myTextView = new TextView (Kontext, null, R.style.myCustomStyle);

+0

und das funktioniert/ich war sicher, der zweite Parameter ist für die Attribute aus dem Stil und der letzte ist für das Thema, nicht Stil, aber ich werde es trotzdem versuchen :-) Es könnte nur der Deal sein: -) – codeScriber

+0

Das zweite Attribut (AttributeSet) enthält die Attribute aus der XML-Layoutdefinition. Der dritte Parameter verweist auf den Stil. Die Ladereihenfolge ist: 1) Laden von Thema (das global für die App definiert ist. 2) Überschreiben von Daten von Stilen und 3) Überschreiben mit Daten von XML-Layout – Impression

+0

10 nop :-(tut nicht th Trick ... ich setze mein Stil in der letzten Parameter und es wird ignoriert, nach Ihrer Priorität der Dinge hätte es funktioniert.Ich fügte meine Test-Code zu meiner Frage oben – codeScriber

1

Ich hoffe, diese Antwort kann helfen: Ich würde die Ansicht, die x-mal erscheinen kann, in einer separaten Layoutdatei definieren und das Layout inflater verwenden, um sie dynamisch/programmgesteuert hinzuzufügen.

Beispielcode:

LayoutInflater l = getLayoutInflater(); // is a method from activity class 
for (int i = 0; i < x; i++) 
{ 
    l.inflate(R.layout.custom_list_view_entry, parentView); 
} 

custom_list_view_entry.xml im res/Layout-Ordnern Ihren Listeneintrag Layout und enthalten alle Stilinformationen oder eine komplexere Sicht Hierarchie definieren. ParentView ist die Ansicht, die der Container für die Listeneinträge ist.

+0

ich habe mehrere von denen, ich hatte es mit der Definition auf diese Weise, es macht unser Layout-Verzeichnis groß und unordentlich. Deshalb frage ich speziell über die Anwendung eines Stils. – codeScriber