我想创建一个ListView,其中的项目有两个可压缩的部分,比如在Android手机/联系人应用程序中的几个地方显示的布局:
http://i55.tinypic.com/358s1lc.jpg
我的布局工作正常,包括分别处理每个部件的事件,除了按下较小部件时的视觉问题。在我的应用程序中,较小的部分在按下时仅获得背景的小椭圆,如下所示:
请注意,这实际上不是我的应用程序 - 即NubDial,但我的应用程序存在同样的问题。由于NubDial使用与手机应用程序完全相同的XML布局,因此我不确定列表项布局的相关性,但无论如何它们仍然存在:
联系人列表:contacts_list_item.xml
NubDial:contacts_list_item.xml
有人知道那里会发生什么吗?
答案 0 :(得分:0)
嗯。我现在没有办法测试这个,但我想我知道你需要做什么。浏览来源,对于通话按钮,Google使用名为DontPressWithParentImageView
的自定义视图。如果您按下父母,它基本上不会设置按下状态(如果您实际按下联系人项目,则不会看到按下的电话图标)。
我现在找不到实际的适配器源,但你应该看看,在ListAdapter中,在getView()方法中,给你的调用按钮(在这种情况下你的DontPressWithParentImageView)一个onClickListener( )用所选联系人的号码调用拨号器。同时,ListView的onListItemClick()方法可以处理备用操作(即显示联系人详细信息)。
答案 1 :(得分:0)
你可以做一件事。 在列表视图行布局中,您可以将这些部分划分为“主容器”,其中包含“左容器”和“右容器”视图组。
并在左右容器中设置'clickable = true',然后您可以通过'id'识别点击次数。
答案 2 :(得分:0)
布局使用右侧按钮的背景可绘制:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false"
android:drawable="@android:color/transparent" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@*android:drawable/list_selector_background_transition" />
<item android:state_focused="false" android:state_pressed="false"
android:drawable="@android:drawable/screen_background_dark"/>
</selector>
将list_selector_background_transition
drawable及其图像复制到我的项目中修复了该问题。我觉得这很奇怪,如果可能的话我会喜欢使用系统drawable。有谁知道发生了什么事?