Android:列表视图上的多个操作 - 焦点问题

时间:2009-02-01 05:17:24

标签: android listview button focus

我想实现一个ListView,我可以用我的光标做任何问题。现在,根据您点击它的哪一行,您将根据在该行上按下的信息(就像它应该按照预期一样)进入新活动。我想有一个按钮来删除该行,因此用户可以按行的任何部分来启动新活动,但如果他们按下该行上的按钮,它会删除该行(或启动删除活动/功能)。

如果你能看到@ DroidRecord,它们的布局与我想要的相似。

谢谢!

克里斯。

6 个答案:

答案 0 :(得分:9)

答案 1 :(得分:6)

另一种可能的解决方法 - 您可以使用ImageView而不是按钮,并设置ImageView的onClickListener(例如,当您为单元格视图充气时)。

ImageView不可聚焦,因此不会阻止调度OnListItemClick(),当您单击图像时,只会触发图像的侦听器。

答案 2 :(得分:4)

你有什么问题吗?如何将一个按钮添加到列表行?

非常简单,正如您所期望的那样,它将被添加到行的布局中。

不幸的是,虽然这也会使整行“不可触及”。我问的Google开发人员说这是设计的(据我记得),你应该使用TouchDelegate来解决这个问题。因为没有样本,甚至没有在android源代码中,只有非常薄的documentation对我不起作用

无论如何,似乎没有多少应用程序在列表行中使用按钮。我只知道我的(newsrob,见文章列表)和闹钟。也许你可以使用上下文菜单?

否则,丑陋的解决方案是添加到getView方法的行视图上调用setOnClickListener()。

干杯

答案 3 :(得分:1)

这不是你的问题的答案,但长按一下/标签通常是弹出上下文菜单并添加额外操作的地方,比如删除。您可以在此处阅读如何操作:How do you implement context menu in a ListActivity on Android?

答案 4 :(得分:0)

我要感谢 BoD 关于将focusable状态移到按钮上的hint,它节省了我的一天。

但是有关信息,因为按钮不再是focusable - state_focused on<选择器> xml - ,它的设计将不再显示给用户。

这些按钮仍会获得状态pressed,但也可以点击父视图上的任何其他位置(任何地方但是另一个按钮)!

记住这一点,它对你自己的情况来说不是一个好的解决方案,但它确实运作良好。

答案 5 :(得分:0)

我试过这个可以点击按钮,但它对我不起作用     机器人:可聚焦=“假”     机器人:focusableInTouchMode = “假”

所以我做的是将活动布局更改为scrollview,然后在其中添加linerLayout。 之后,您可以向布局添加按钮,每个按钮都可以点击。