Android ListView OnItemClickListener 中获取点击坐标

Posted

技术标签:

【中文标题】Android ListView OnItemClickListener 中获取点击坐标【英文标题】:Obtaining click coordinates in Android ListView OnItemClickListener 【发布时间】:2011-09-28 10:28:41 【问题描述】:

假设我有一个 android ListView,我将 OnItemClickListener 附加到:

ListView listView = (ListView) findViewById(...);
listView.setOnItemClickListener(new OnItemClickListener() 
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
        [...]

当点击视图中的某个项目时,我可以通过获取view 的尺寸来找出对应的矩形。但是,我想更精确地获取相应的坐标,以识别用户实际点击的屏幕上的点。

不幸的是,OnItemClickListener API 似乎没有公开此信息。有没有其他方法来掌握这个细节(不用自豪地通过实现我自己的ListView 重新发明***)?

【问题讨论】:

【参考方案1】:

我也需要这样做。我在 ListView 上设置了 OnTouchListener 和 OnItemClickListener。触摸侦听器首先被触发,因此您可以使用它来设置一个变量,然后您可以从您的 onItemClick() 访问该变量。您的 onTouch() 返回 false 很重要,否则它将消耗水龙头。就我而言,我只需要 X 坐标:

private int touchPositionX;

...

getListView().setOnTouchListener(new OnTouchListener() 
  public boolean onTouch(View view, MotionEvent event) 
    touchPositionX = (int)event.getX();
    return false;
  
);

getListView().setOnItemClickListener(new OnItemClickListener() 
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    if (touchPositionX < 100) 
    ...

【讨论】:

这是一个不错的解决方案。谢谢。

以上是关于Android ListView OnItemClickListener 中获取点击坐标的主要内容,如果未能解决你的问题,请参考以下文章

Android——listview android:cacheColorHint,android:listSelector属性作用

38.Android之ListView简单学习

Android listview 的用法? 越详细越好。

Android——ListView

ListView / SimpleAdapter 不刷新 - Android

android 怎么让listview 不够一屏 占满一屏