1

我正在使用可在此处下载的导航抽屉示例。

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

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

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

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

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

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

  1. 我知道,或者我可以设置抽屉锁定模式以防止打开导航抽屉,但这比灰色导航操作更不直观
  2. 从列表中删除此时无法访问的项目是否更合适?类似于此处删除 ListView 实现中的描述?这样做的最大缺点是我可能不得不更改列表视图来描述为什么项目已暂时从此列表中删除。
4

1 回答 1

4

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

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

于 2013-07-08T16:26:04.930 回答