android:visibility attribute in preferences xml not working? (Android 2.3)

半腔热情 提交于 2020-12-26 06:04:57

问题


Take for example this small preference.xml file:

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

The attribute android:visibility="invisible" for the last checkbox doesn't work; this attribute (or gone for that matter) doesn't work for preferences?

I don't have anything in the code to mess with its visibility, just curious why this doesn't work.


回答1:


android:visibility is used to show and hide Views but it's not valid for a Preference. The documentation for Preference lists the available XML attributes, but none of them are what you want.

It is, however, possible to add and remove preferences from a PreferenceScreen programatically.




回答2:


You have to use setVisible method to change the visibility.

First, initialize the checkbox preference.

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

then

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

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



回答3:


I realize that this is an older question that didn't previously have an acceptable answer to do this in xml.

Now with the addition of the AppCompat Library is IS possible do this directly in xml. See the complete example at https://stackoverflow.com/a/54154665/114549




回答4:


For AndroidX users, add this directly to your preference XML

app:isPreferenceVisible="false"


来源:https://stackoverflow.com/questions/11794021/androidvisibility-attribute-in-preferences-xml-not-working-android-2-3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!