安卓 ListView 部分可点击区域

4
我想创建一个ListView项目布局,其中我可以触摸行项的某些部分。这类似于2.0的联系人通话记录的行为,我可以点击绿色电话标志发起呼叫,或单击来电详情以获取有关联系人的更多信息。
我不需要只有行为的实现。我已经知道要将OnClickListeners绑定到行项中要捕获按压的部分。我的真正问题是,当用户按压屏幕的某个区域时,UI在某些情况下无法正确地反应。例如:如果他们点击了绿色电话图标,则仅会突出显示电话周围的框。而按下名称则会突出显示该区域。
我查看了联系人应用程序的源代码,但它非常复杂,并且我能够取得一些成功,但存在问题,因为源代码引用了SDK本身未公开的Drawable和资源。
我希望有一个合理的实现,不依赖于Android内部资源。或者至少指向正确方向的一些指针。
我正在寻找适用于按压和5向定向键的解决方案。
这里是一个显示我所说内容的图形。

Android通话记录
(来源:the-gadgeteer.com)

1个回答

3

newView方法中,每设置一行列表时,看起来就像他们为绿色的call_icon设置了一个onClickListener。在绑定视图时,电话号码通过View.setTag()方法添加到call_icon中。

然后,在onClick处理程序中,提取电话号码并触发电话呼叫Intent

所有列表行中的其他按键都将按照通常的方式处理 —— 使用onListItemClick方法。

1
我已经成功实现了该行为。我使用标签来确定如何正确操作和绑定OnClickListeners。问题在于,无法在所有情况下正确地使黄橙色背景在用户正确按下小部件时出现。特别是当他们使用5键方向键时,文本会变黑,但背景仍然是黑色的。 - Jeremy Edwards

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接