在 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()
以返回 false
和 isEnabled()
以根据需要返回 true
或 false
。
【讨论】:
@user1363871:当您使用搜索引擎查找涉及这些方法的样本时,您发现了什么? 它并没有灰显禁用的项目以上是关于在 Android 中禁用导航抽屉中的项目的主要内容,如果未能解决你的问题,请参考以下文章