Personnalisé PreferenceCategory Rubriques
J'ai un simple écran de préférence définie comme ceci
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Security">
<CheckBoxPreference
android:title="Require Pin on Start"
android:summary="Require pin to run the application"
android:key="@string/pref_require_pin"
android:defaultValue="false" />
</PreferenceCategory>
<PreferenceCategory android:title="Settings">
<ListPreference
android:title="History Age (in days)"
android:summary="Display items up to 30 days old"
android:key="@string/pref_history_days"
android:defaultValue="30"
android:entries="@array/days_list"
android:entryValues="@array/days_list"
android:dialogTitle="Select History Age"/>
</PreferenceCategory>
</PreferenceScreen>
J'ai un style de configuration et déjà utilisé ailleurs dans mon application.
<style name="ListHeader">
<item name="android:textColor">#000000</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">12sp</item>
<item name="android:background">#cccccc</item>
<item name="android:paddingTop">6px</item>
<item name="android:paddingBottom">6px</item>
<item name="android:paddingLeft">12px</item>
</style>
et voici mon activité
public class PreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.preferences);
}
}
Comment puis-je appliquer mon style personnalisé à la PreferenceCategory
tête?
Vous devez vous connecter pour publier un commentaire.
Vous devriez jeter un oeil à
Préférences.Catégorie
style:Prenons un coup d'oeil à
preference_category.xml
fichier:Donc, vous avez besoin pour créer un thème personnalisé qui s'étend par défaut android
Theme
et remplacerlistSeparatorTextViewStyle
valeur avecListHeader
style. Et puis appliquer ce thème à l'Activité qui s'étendPreferenceActivity
.Ici est de savoir comment vous pouvez le faire.
Première, dans votre
styles.xml
ajouter le code suivant:Puis dans votre
AndroidManifest.xml
ajouter un thème à votre préférence acitivité:Voici une capture d'écran:
listSeparatorTextViewStyle
android:id="@android:id/title"
puis il va choisir automatiquement! P. S: Connaître sa fin peut aider quelqu'un un jour 🙂@inazaruk a donné la réponse assez bien, mais depuis les dernières mises à jour,
ADT 18 and above
, il existe certaines restrictions sur lastyles
qui donne l'erreurError retrieving parent for item: No resource found that matches the given name '@android:style/Widget.TextView.ListSeparator'.
Voir ce lien pour la raison du problème et de la solution. Depuis ce post n'est pas un code pour la compréhension, je fournis mon code ici
Style comme il est décrit dans inazaruk la réponse est assez simple, mais il ne change que le style du texte dans l'en-tête, il n'offre pas un moyen de spécifier une toute nouvelle mise en page (le style n'appliquera pas les
layout
élément). Cependant, il existe une solution simple et efficace si vous étendez la classe:et simplement utiliser ce lieu de l'original
PreferenceCategory
lors de la définition de vos Préférences de mise en page.Votre mise en page peut, bien sûr, avoir tout ce que vous voulez, y compris les lignes au-dessus ou au-dessous du texte, d'horizons différents, rembourrage, que ce soit. Par exemple, cela permettra de montrer une conception de matériel de couleur des sous-titres avec une ligne au-dessus:
Comme Gábor de réponse, mais au lieu de l'étendre PreferenceCategory vous pouvez le faire comme ceci :
1. Faites votre mise en page personnalisée.Je l'ai appelé il preference_category.xml :
Important : la mise en page doit contenir un textview avec cet id : android:id="@+android:id/titre"
2.et dans la préférence d'ajouter cette ligne : android:layout="@mise en page/preference_category"