【问题标题】:Keep unpressed state of a child view from a ListView item which is pressed从被按下的 ListView 项目中保持子视图的未按下状态
【发布时间】:2012-02-15 19:57:01
【问题描述】:

我有一个 ListView,其中包含每个项目中带有 ImageView 的项目。这个 ImageView 有一个 OnClickListener。我设置了一个 XML 背景来为按下和正常状态设置可绘制对象。 ListView 上的 onItemClick 和 ImageView 上的 onClick 按预期触发,但问题是当我单击项目(而不是 ImageView)时,它也会在 ImageView 上显示按下状态。在这种情况下,我想在 ImageView 上保持正常状态...

我尝试过duplicateParentState="false",玩过焦点等等,还没找到解决办法。

有人知道如何解决这个问题吗?

谢谢你, 二湾

【问题讨论】:

    标签: android listview view state


    【解决方案1】:

    我通过向列表视图项的内部项添加可点击属性解决了这个问题。之后,列表视图项不与可单击的视图共享按下状态。

    只需添加:

       android:clickable="true"
    

    (在 4.1 上测试)

    希望这对某人有所帮助,我个人找不到这么简单的解决方案。

    【讨论】:

    • 您必须将所有当前视图组设置为 "android:clickable="true""
    【解决方案2】:

    我在使用 ListView 的一些实验中发现,listitem 中只有一个元素可以支持 onClickListener - 不过我还没有找到任何支持这个想法的文档。

    例如,如果您列出的项目包含一个复选框或一个评分栏,那么我将无法为它所包含的列表项触发 onClick 事件

    【讨论】:

    • 感谢您的回答。实际上,我的项目中只有一个视图,它有一个点击监听器。 onClickListener 和 onItemClickListener 在需要时被触发。问题是当我按下项目时,ImageView drawable 也变为按下状态而不是保持正常状态。
    • 你有方便的 getView() 实现吗?可以发一下出处吗?
    • 我确实自己制作了 getView。不幸的是,我不允许发布源代码,尽管我知道它可能更清楚......:/我知道我可以通过实现 OnTouchListener 来修复它,但是对于像这样的小 UI 来说它很重......
    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多