Android: атрибут видимости в настройках xml не работает? (Android 2.3)

Возьмем, к примеру, этот небольшой файл preference.xml:

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

Атрибут android: visibility = "invisible" для последнего флажка не работает; Этот атрибут (или ушел в этом отношении) не работает для предпочтений?

У меня нет ничего в коде, чтобы возиться с его видимостью, просто любопытно, почему это не работает.

android:visibility используется для отображения и скрытия View s, но это недопустимо для Preference . В документации по Preference перечислены доступные атрибуты XML, но ни один из них не является тем, что вы хотите.

Тем не менее, можно добавлять и удалять предпочтения из PreferenceScreen программно.

Вы должны использовать метод setVisible для изменения видимости.

Сначала инициализируйте предпочтение флажка.

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

тогда

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