行中带有可点击项目的 Android ListView 会导致继续滚动出现问题
Posted
技术标签:
【中文标题】行中带有可点击项目的 Android ListView 会导致继续滚动出现问题【英文标题】:Android ListView with clickable items in it's rows causes problems continuing scrolling 【发布时间】:2011-05-12 18:17:50 【问题描述】:我已经在互联网上搜寻了几个小时的答案,但我似乎找不到任何能够解决这个问题的人。
我有一个使用自定义适配器的列表视图。一行是这样的
列表由一个数组填充。一切都很好。
现在,我希望 ImageView 和 ToggleButton 对点击做出反应,所以我在我的适配器中实现 OnClickListener,将项目位置放在每个视图的标签中,然后我将它们的 onclicklistener 设置为此。
效果很好,除了现在我不能使用 onListItemClick 来启动项目的活动!好的,我说,我只是在中间放置文本的 relativelayout 使用相同的 onclicklistener。效果很好。一切都是可点击的,生活是美好的。
除了!现在,当我滚动列表时,我无法通过再次投掷来“继续”滚动。这会导致滚动停止,我必须再次甩动才能让它再次运行。似乎 onclick-thingy 导致投掷运动被解释为点击或其他东西(它不会触发 onClick 中的逻辑)。
我知道这可以通过转到我的 HTC Hero 上的电话列表来实现,它具有我想要的应用程序的布局和行为。这个应用程序甚至似乎有 onItemClickListener 工作。
那么我怎样才能确保列表保持滚动,并且仍然能够单击切换按钮、listitem 和 imageview?我整天都被困在这个问题上,这让我很头疼:(
【问题讨论】:
【参考方案1】:在我回家之前又快速搜索了一下,我发现了这个:
How to fire onListItemClick in Listactivity with buttons in list?
CodeFusionMobile 提到将列表布局的android:descendantFocusability
属性设置为"blocksDescendants"
,所以我尝试这样做。现在一切都按预期工作。滚动作品,onListitemClicked
作品,点击ToggleButton
作品,点击ImageView
作品。
只是为了说清楚......在父RelativeLayout
,就在row.xml
的顶部,我添加了
android:descendantFocusability="blocksDescendants"
【讨论】:
以上是关于行中带有可点击项目的 Android ListView 会导致继续滚动出现问题的主要内容,如果未能解决你的问题,请参考以下文章