2012-08-03 10 views
6

Nehmen Sie zum Beispiel diese kleine preference.xml Datei:android: Sichtbarkeitsattribut in den Einstellungen XML funktioniert nicht? (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> 

Das Attribut android: Sichtbarkeit = "unsichtbar" für die letzte Option nicht funktioniert; Dieses Attribut (oder auch nicht) funktioniert nicht für Voreinstellungen?

Ich habe nichts im Code, um mit seiner Sichtbarkeit zu verwirren, nur neugierig, warum das nicht funktioniert.

Antwort

10

android:visibility wird verwendet, um View s anzuzeigen und zu verbergen, aber es ist nicht gültig für eine Preference. Die documentation für Preference listet die verfügbaren XML-Attribute, aber keiner von ihnen ist, was Sie wollen.

Es ist, jedoch möglich, Präferenzen von einem PreferenceScreen programmatisch hinzuzufügen und zu entfernen.

0

Sie müssen setVisible Methode verwenden, um die Sichtbarkeit zu ändern.

Zuerst initialisieren Sie die Checkbox-Präferenz.

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

dann

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

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