【发布时间】:2010-11-17 19:28:54
【问题描述】:
在 Android 中,我想向用户展示一个列表。选择列表上的项目时,执行某些操作,此列表项不再可选。还“变灰”等表示下次显示列表时无法选择。我在 Adapter 中看到了 isSelectable() 覆盖,但我相信这会导致项目被视为分隔符,从而导致视觉问题。而且我还没有找到一种将项目“变灰”的方法。有任何想法吗?谢谢...
【问题讨论】:
在 Android 中,我想向用户展示一个列表。选择列表上的项目时,执行某些操作,此列表项不再可选。还“变灰”等表示下次显示列表时无法选择。我在 Adapter 中看到了 isSelectable() 覆盖,但我相信这会导致项目被视为分隔符,从而导致视觉问题。而且我还没有找到一种将项目“变灰”的方法。有任何想法吗?谢谢...
【问题讨论】:
至于使项目变灰。我不确定这是否是最好的方法,但我就是这样做的:
view.setAlpha(75);
view.setBackgroundColor(Color.GRAY);
我基本上是让项目透明,然后将背景颜色设置为灰色。如果您要重复使用列表项,如果条件不满足,您还应该将它们更改回原来的状态,即:
view.setAlpha(255);
view.setBackgroundColor(Color.WHITE);
也就是说,如果您的原始状态是不透明且背景颜色为白色。
【讨论】:
您需要禁用视图。如果您正在创建视图,只需在顶部视图上调用 .setDisabled(boolean)。根据我的经验,将列表项设置为禁用效果并不好。
【讨论】:
这是我正在使用的解决方案。我为我的 ListView 设置了一个 OnItemClickListener。单击列表中的项目时,我会获取传入的 View 并对其调用 setEnabled(false) 。这将使该项目变灰。但是,后续单击该项目仍会调用 onItemClick 方法。因此,您需要在每次点击时检查该项目是否启用/禁用并采取相应措施。
【讨论】: