2012-08-03 9 views
6

Prendiamo ad esempio questo piccolo file preference.xml:attributo android: visibilità in preferenze non XML di lavoro? (Android 2.3)

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen android:title="@string/sig_title" xmlns:android="http://schemas.android.com/apk/res/android"> 
<ListPreference android:entries="@array/text_display_entries" android:title="@string/sig_style" android:key="text_style" android:entryValues="@array/text_display_values" /> 
<CheckBoxPreference android:title="@string/custom_font" android:key="tweaks_text" /> 
<CheckBoxPreference android:title="@string/col_random" android:key="random_color_pref" /> 
<CheckBoxPreference android:visibility="invisible" android:enabled="false" android:title="@string/sig_show" android:key="show_sig" /> 
</PreferenceScreen> 

L'attributo android: visibility = "invisibile" per l'ultima casella di controllo non funziona; questo attributo (o andato per quello) non funziona per le preferenze?

Non ho nulla nel codice a pasticciare con la sua visibilità, proprio curioso di sapere perchè questo non funziona.

risposta

10

android:visibility viene utilizzato per mostrare e nascondere View s ma non è valido per un Preference. I documentation per Preference liste attributi XML disponibili, ma nessuno di loro è ciò che si vuole.

E è, tuttavia, è possibile aggiungere e rimuovere le preferenze da un PreferenceScreen in modo programmatico.

0

si deve utilizzare setVisible metodo per modificare la visibilità.

In primo luogo, inizializzare la preferenza casella di controllo.

CheckBoxPreference showSigPreference = (CheckBoxPreference) findPreference("show_sig"); 

poi

// Show the check box preference 
showSigPreference.setVisible(true); 

// Hide the check box preference 
showSigPreference.setVisible(false);