在列表视图行中添加多个可单击区域

时间:2015-04-15 11:57:05

标签: java android xml listview

我想为listview实现一行,其中包含两个具有特殊要求的点击区域:

我想要实现的是:

enter image description here

点击以下命令:

  • 红色区域链接用户个人资料
  • 蓝色区域链接项目明细
  • 忽略黄色区域上的点击
  • 点击蓝色区域后,选择了所有行(例如背景= ?attr/selectableItemBackground

我尝试了几次配置,但我没有得到所有的观点:

配置A:在蓝色容器上添加一个clicklistener,在红色容器上添加另一个,工作得很好但是在点击蓝色区域时缺少整行选择效果。

配置B:在整个行上添加clickListener,在红色容器上添加另一个clicklistener也可以,但不会忽略黄色区域上的点击。

我该如何实现?

注意:还尝试在黄色容器上使用带有空单击侦听器的配置B.但是添加一个clickListener来忽略它听起来很奇怪,我的真实视图比这更复杂,我应该添加很多空的clicklistener。理想的行为应该是蓝色容器将其点击状态传播到rowView

3 个答案:

答案 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。这将阻止点击事件到黄色部分

我希望你的错误能解决。

由于