2010-11-27 3 views
0

J'ai un style personnalisé que je voudrais appliquer à mes vues. Je n'ai pas pu créer mes vues par programme, pas par XML, car c'est un contenu dynamique (la même vue peut apparaître X fois, mais pas plus de 10, donc je ne veux pas de liste).lecture de style android xml

si je peux obtenir un XmlPullParser du style, je peux easly utiliser AttributeSet attrs = Xml.asAttributeSet(parser); et le transmettre à C'tor de la vue. Le problème est l'obtention du XmlPullParser. getresources(). GetX n'a ​​pas de méthode getStyle(). Peut-être que je suis juste en train de prendre la mauvaise approche. Quelqu'un a-t-il une idée de la façon d'appliquer le style à une vue programmatique?

10x.

ok, j'ai essayé la troisième approche des paramètres C'tpr:

@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); 
} 

et le style:

<?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> 

Je ne comprends pas grand texte en vert. Je reçois la taille par défaut du texte en gris ...

Répondre

2

Ok. Autrement, il suffit de créer la vue par programmation et d'utiliser le paramètre style dans le constructeur:

E.g: TextView myTextView = nouveau TextView (context, null, R.style.myCustomStyle);

+0

et cela fonctionne/j'étais sûr que le deuxième paramètre est pour les attributs du style et le dernier est pour le thème, pas de style, mais je vais donner un coup de toute façon :-) il pourrait juste être l'affaire: - – codeScriber

+0

Le 2ème attribut (AttributeSet) contient les attributs de la définition de mise en page XML. Le 3ème paramètre référence le style. L'ordre de chargement est: 1) charger à partir du thème (qui est défini globalement pour l'application 2) écraser les données des styles et 3) écraser avec les données de la mise en page xml – Impression

+0

nop :-(ne fait pas le tour ... je mets mon style dans le dernier paramètre et il est ignoré, en fonction de votre priorité des choses, il aurait dû travailler.J'ai ajouté mon code de test à ma question ci-dessus – codeScriber

1

J'espère que cette réponse peut vous aider: Je définirais la vue, qui peut apparaître x fois, dans un fichier de mise en page séparé et utiliser la mise en page pour les ajouter dynamiquement/par programmation.

Exemple de code:

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 dans la résolution/dossier de mise en page définir votre mise en page d'entrée de la liste contient toutes les informations de style ou une hiérarchie de vue plus complexe. parentView est la vue, qui est le conteneur pour les entrées de la liste.

+0

J'ai plusieurs d'entre eux, je l'ai eu avec les définir de cette façon, il rend notre répertoire de mise en page grand et désordonné. C'est pourquoi je demande spécifiquement d'appliquer un style. – codeScriber