8

以这个小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" 不起作用;此属性(或已消失)不适用于偏好?

我在代码中没有任何东西可以扰乱它的可见性,只是好奇为什么这不起作用。

4

4 回答 4

12

android:visibility用于显示和隐藏 Views 但对 a 无效Preference。的文档列出了Preference可用的 XML 属性,但它们都不是您想要的。

但是,可以通过编程方式添加和删除首选项PreferenceScreen

于 2013-02-01T12:44:02.470 回答
3

对于 AndroidX 用户,将其直接添加到您的偏好 XML

app:isPreferenceVisible="false"
于 2020-03-27T20:14:28.590 回答
2

您必须使用setVisible方法来更改可见性。

首先,初始化复选框首选项。

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

然后

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

// Hide the check box preference
showSigPreference.setVisible(false);
于 2017-05-31T08:54:08.530 回答
1

我意识到这是一个较老的问题,以前在 xml 中没有可接受的答案。

现在通过添加 AppCompat 库可以直接在 xml 中执行此操作。请参阅https://stackoverflow.com/a/54154665/114549上的完整示例

于 2019-01-12T01:00:47.353 回答