首选项 xml 中的 android:visibility 属性不起作用? (安卓 2.3)

Posted

技术标签:

【中文标题】首选项 xml 中的 android:visibility 属性不起作用? (安卓 2.3)【英文标题】:android:visibility attribute in preferences xml not working? (Android 2.3) 【发布时间】:2012-08-01 09:38:35 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

不过, 可以通过编程方式在 PreferenceScreen 中添加和删除首选项。

【讨论】:

【参考方案2】:

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

app:isPreferenceVisible="false"

【讨论】:

【参考方案3】:

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

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

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

然后

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

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

【讨论】:

这对我不起作用,因为setVisible 甚至不是我的CheckBoxPreference 的选项。 developer.android.com/reference/androidx/preference/… 我明白了,你使用的是androidx。【参考方案4】:

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

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

【讨论】:

以上是关于首选项 xml 中的 android:visibility 属性不起作用? (安卓 2.3)的主要内容,如果未能解决你的问题,请参考以下文章

覆盖 Visual Studio Tools for Apache Cordova config.xml 文件中的 windowSoftInputMode 首选项

Eclipse RCP 中创建自己定义首选项,并能读取首选项中的值

xml 设置活动首选项XML

Cordova 插件快速从 XML 中读取首选项

xml 阳光首选项设置(第1部分)

未在服务中获取共享首选项的更新值