我想为listview实现一行,其中包含两个具有特殊要求的点击区域:
我想要实现的是:
点击以下命令:
?attr/selectableItemBackground
)我尝试了几次配置,但我没有得到所有的观点:
配置A:在蓝色容器上添加一个clicklistener,在红色容器上添加另一个,工作得很好但是在点击蓝色区域时缺少整行选择效果。
配置B:在整个行上添加clickListener,在红色容器上添加另一个clicklistener也可以,但不会忽略黄色区域上的点击。
我该如何实现?
注意:还尝试在黄色容器上使用带有空单击侦听器的配置B.但是添加一个clickListener来忽略它听起来很奇怪,我的真实视图比这更复杂,我应该添加很多空的clicklistener。理想的行为应该是蓝色容器将其点击状态传播到rowView
答案 0 :(得分:0)
所以A有效,但你想摆脱压制颜色?如果是这样,请在ListView XML中添加它。
<ListView
android:cacheColorHint="#00000000"
android:listSelector="@android:color/transparent"
/>
答案 1 :(得分:0)
您必须实现具有两个子布局的布局,其中一个包含头像,另一个包含您的数据,而在您的适配器类中您应该必须添加具有特定布局ID的标记,并为该布局添加OnClickListener然后在您单击布局时获得标记并基于该标记您可以在ListView项目中处理您的视图。
答案 2 :(得分:0)
您可以选择 A 或 B ,只需添加少量内容
A :
调用listview方法
void setItemsCanFocus(false)
,因此当您单击Blue部分时,整行将获得焦点
B :
在自定义或基本适配器中覆盖
isEnabled()
方法,并为黄色部分返回false
。这将阻止点击事件到黄色部分
我希望你的错误能解决。
由于