【问题标题】:Android list with 'grayed out' items带有“灰色”项目的 Android 列表
【发布时间】:2010-11-17 19:28:54
【问题描述】:

在 Android 中,我想向用户展示一个列表。选择列表上的项目时,执行某些操作,此列表项不再可选。还“变灰”等表示下次显示列表时无法选择。我在 Adapter 中看到了 isSelectable() 覆盖,但我相信这会导致项目被视为分隔符,从而导致视觉问题。而且我还没有找到一种将项目“变灰”的方法。有任何想法吗?谢谢...

【问题讨论】:

    标签: android listview


    【解决方案1】:

    至于使项目变灰。我不确定这是否是最好的方法,但我就是这样做的:

    view.setAlpha(75);
    view.setBackgroundColor(Color.GRAY);
    

    我基本上是让项目透明,然后将背景颜色设置为灰色。如果您要重复使用列表项,如果条件不满足,您还应该将它们更改回原来的状态,即:

    view.setAlpha(255);
    view.setBackgroundColor(Color.WHITE);
    

    也就是说,如果您的原始状态是不透明且背景颜色为白色。

    【讨论】:

    • 注意:视图必须是支持 setAlpha 的 Android 视图。 ImageView 就是这种视图的一个示例。
    • 视图类的 setAlpha(float) 仅在 11 API 级别可用。 developer.android.com/reference/android/view/…
    • setAlpha 的范围是 0 到 1。像 255 这样的值没有意义。
    【解决方案2】:

    您需要禁用视图。如果您正在创建视图,只需在顶部视图上调用 .setDisabled(boolean)。根据我的经验,将列表项设置为禁用效果并不好。

    【讨论】:

      【解决方案3】:

      这是我正在使用的解决方案。我为我的 ListView 设置了一个 OnItemClickListener。单击列表中的项目时,我会获取传入的 View 并对其调用 setEnabled(false) 。这将使该项目变灰。但是,后续单击该项目仍会调用 onItemClick 方法。因此,您需要在每次点击时检查该项目是否启用/禁用并采取相应措施。

      【讨论】:

        猜你喜欢
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 2020-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多