【问题标题】:Making a custom Android ListView partially clickable使自定义 Android ListView 部分可点击
【发布时间】:2013-11-03 13:34:31
【问题描述】:

我有一个带有自定义项目布局的 Android ListView:

|              ...              |
+-----------------+-------------+
|  Labels & Info  |  ImageView  |
+-----------------+-------------+
|              ...              |

我希望在单击列表项的左侧(标签和信息)或右侧(ImageView)时发生两种不同的操作。此外,被按下的项目部分应显示准确的触摸反馈(因为它会通过单击突出显示 ListView 项目)。

我知道如何为特定视图实现 OnClickListeners,但我真正想要的是将列表项本身拆分为两个可点击区域。

我怎样才能做到这一点?

编辑:这是一张应该更准确地描述我想要的图像:

底部项目中的红色和绿色区域说明了点击时应该可以点击和突出显示的两个区域。

【问题讨论】:

  • "但我真正想要的是将列表项本身拆分为两个可点击区域。"你能详细说明一下吗?
  • 最好为您的视图设置点击监听器。单独视图中的示例类别 1 和单独视图中的图像,并具有相同的单击侦听器。您可以为单个视图使用选择器
  • 我目前使用的是相对布局。你的意思是我应该使用嵌入另外两个“可点击”布局的水平线性布局?
  • 我的意思是让 textview(包含标签)和 imageview 的点击监听器
  • 你的意思是你需要红色部分有自己的按下和聚焦状态,所以绿色部分?

标签: android listview onclick touch-feedback


【解决方案1】:

要实现这一点,您必须编辑适配器的 getView() 函数。将 onClickListeners 添加到其中的相应 ImageView 和 TextView 中。例如:

@Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View rowView = convertView;
    if (rowView == null) {
      LayoutInflater inflater = context.getLayoutInflater();
      rowView = inflater.inflate(R.layout.rowlayout, null);
      ViewHolder viewHolder = new ViewHolder();
      viewHolder.text = (TextView) rowView.findViewById(R.id.TextView01);
      viewHolder.image = (ImageView) rowView
          .findViewById(R.id.ImageView01);
      rowView.setTag(viewHolder);
    }

    ViewHolder holder = (ViewHolder) rowView.getTag();
    //Add your onClickListeners here
    //holder.text.setOnClickListner(new OnClickListner...
    //holder.iamge.setOnClickListner(new OnClickListner...

    return rowView;
  }

【讨论】:

  • 但 op 说“我知道如何为特定视图实现 OnClickListeners
【解决方案2】:

您可以在布局中放置两个 TextView,分别与绿色区域和红色区域匹配,并为它们设置点击侦听器,并将文本设置为“”。这意味着您有 5 个不同的部分,3 个要向用户显示的部分和 2 个用于点击侦听器的部分,希望您能理解我的话。

【讨论】:

  • 它会起作用,而且不错,而且似乎已经足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多