隐藏 PreferenceActivity 中的首选项

发布于 2024-12-13 10:37:56 字数 88 浏览 3 评论 0原文

是否可以在 PreferenceScreen 中隐藏首选项?我不需要禁用它,它必须是不可见的(有时)

重要提示:我需要保持最低 API 级别 7+

Is possible to hide a preference in a PreferenceScreen? I don't need to disable it, it must be invisible (sometimes)

Important: I need to keep the min API level 7+

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

萌逼全场 2024-12-20 10:37:56

如果您的注销按钮(首选项)位于 PreferenceScreen 中,请执行以下操作:

PreferenceScreen screen = getPreferenceScreen();
Preference logout = findPreference("logout");
if(screen != null && logout != null)
  screen.removePreference(logout);

否则,如果您的注销按钮(首选项)位于 PreferenceCategory(位于 PreferenceScreen 内)中,请执行以下操作:

PreferenceCategory category = (PreferenceCategory) findPreference("category_name");
Preference logout = findPrefence("logout");
if(category != null && logout != null)
  category.removePreference(logout);

您可以输入您的首选项名称,这是为了例如,对于注销首选项,如果您有另一个首选项(例如 CheckBoxPreference),则需要在 findPreference 之前强制转换该特定首选项。

If your logout button (Preference) is in the PreferenceScreen, do this:

PreferenceScreen screen = getPreferenceScreen();
Preference logout = findPreference("logout");
if(screen != null && logout != null)
  screen.removePreference(logout);

Else if your logout button (Preference) is in a PreferenceCategory (which is inside a PreferenceScreen), do this:

PreferenceCategory category = (PreferenceCategory) findPreference("category_name");
Preference logout = findPrefence("logout");
if(category != null && logout != null)
  category.removePreference(logout);

You can put whatever your preferences name is, this is for example for a logout preference, if you have another Preference (eg CheckBoxPreference) you need to cast that specific Preference before findPreference.

番薯 2024-12-20 10:37:56

类似的东西应该有效:

Preference p = findPreference("your_preference_key");
getPreferenceScreen().removePreference(p);

Something like that should works:

Preference p = findPreference("your_preference_key");
getPreferenceScreen().removePreference(p);
绾颜 2024-12-20 10:37:56

PreferenceScreen scr = getPreferenceScreen();

如果(scr!=空)

     scr.removePreference(findPreference("preferenceKey"));

PreferenceScreen scr = getPreferenceScreen();

if(scr!=null)

     scr.removePreference(findPreference("preferenceKey"));
纸短情长 2024-12-20 10:37:56

如果您使用支持库 v7 Preference,您可以使用setVisible方法。它正是您所需要的。

If you use Support Library v7 Preference, you can use the setVisible method. It does exactly what you need.

白云悠悠 2024-12-20 10:37:56

现在,您可以使用 AppCompat 库直接在 xml 中执行此操作。

请参阅https://stackoverflow.com/a/54154665/114549

You can now do this directly in xml with the AppCompat library.

See https://stackoverflow.com/a/54154665/114549

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文