在 Android 中禁用导航抽屉中的项目

Posted

技术标签:

【中文标题】在 Android 中禁用导航抽屉中的项目【英文标题】:Disabling items in a Navigation Drawer in Android 【发布时间】:2013-07-06 01:44:23 【问题描述】:

我正在使用导航抽屉示例downloadable here。

我想扩展此示例以禁用选择行星之一。为简单起见,假设我想永久禁用 Saturn 的选择,并将 Saturn 的文本更改为深灰色,并且在用户选择它时不突出显示。 (实际上,当用户更改屏幕上尚未保存到设备的某些值时,我想以编程方式禁用导航)。

我最接近此的方法是阻止从 onItemClick 点击侦听器中调用 selectItem() 方法,但即使我这样做,问题仍然存在 - “土星”的文本仍然出现当用户单击它时可选择并突出显示。

我需要更改小部件的哪一部分以防止 Saturn 的文本被突出显示? 我试过改变

mDrawerLayout.setClickable(false);
mDrawerList.setClickable(false);

但这些选项似乎都没有任何影响。

关于如何解决这个问题的任何建议或想法? 一些有用的说明:

    我知道,或者我可以Set the Drawer Lock Mode 来阻止导航抽屉被打开,但这比让导航操作变灰更不直观 此时从列表中删除无法访问的项目是否更合适?类似于这里Remove ListView implementation 中的描述?这样做的最大缺点是我可能不得不更改列表视图来描述 为什么 项已暂时从该列表中删除。

【问题讨论】:

【参考方案1】:

我想扩展此示例以禁用选择行星之一

创建您自己的 ArrayAdapter 子类,在其中覆盖 areAllItemsEnabled() 以返回 falseisEnabled() 以根据需要返回 truefalse

【讨论】:

@user1363871:当您使用搜索引擎查找涉及这些方法的样本时,您发现了什么? 它并没有灰显禁用的项目

以上是关于在 Android 中禁用导航抽屉中的项目的主要内容,如果未能解决你的问题,请参考以下文章

Android:更改导航抽屉应用程序中的当前内容,而不在抽屉菜单中显示项目

在导航抽屉中禁用暗淡化

深度导航中的 Android 导航抽屉

导航抽屉 - 禁用点击抽屉后面的项目

所有活动中的Android导航抽屉[重复]

如何使导航抽屉应用程序的标题居中?