2010-09-26 4 views
2

J'utilise des attributs xml personnalisés pour les préférences. Les préférences sont gonflées à partir de xml.Android: Attributs Xml personnalisés pour PreferenceScreen

J'ai réussi à créer et lire des attributs xml personnalisés pour EditTextPreference, ListPreference et CheckBoxPreference en créant des classes personnalisées qui héritent de la classe de préférence respective.

Dans le constructeur de la classe je peux lire les attributs comme ceci:

public class CustomTextPreference extends EditTextPreference { 
    public CustomTextPreference(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.PreferenceCustomAttrs); 
     x = a.getString(R.styleable.PreferenceCustomAttrs_x); 
     y = a.getString(R.styleable.PreferenceCustomAttrs_y); 
    } 
} 

Mon problème est que je ne peux le faire pour la classe PREFERENCE, car il est une classe finale. Donc ma question est: Est-il possible de lire les attributs personnalisés d'un PreferenceScreen?

Répondre

1

Probablement pas par les mêmes techniques que vous utilisez. N'oubliez pas, cependant, que les fichiers XML de préférence ne sont que des ressources XML. Vous pouvez obtenir un analyseur pour le fichier via getResources().getXml() à partir de votre PreferenceActivity. De là, vous pouvez lire ce que vous voulez.

+0

merci pour votre réponse! Ce serait une option, mais avec cette approche, les attributs personnalisés ne seraient pas membres de la classe de propriété. Je devrais maintenir un mappage manuel (par exemple via un dictionnaire) de la propriété à ses attributs personnalisés, ce que je fais déjà de toute façon et que je voulais me débarrasser des attributs personnalisés. – thumbmunkeys

Questions connexes