android - Android ListView OnItemClickListener中获取点击坐标

标签 android android-widget android-listview

比方说,我有一个 Android ListView,我将 OnItemClickListener 附加到:

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

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

不幸的是,OnItemClickListener API 似乎没有公开此信息。是否有任何替代方法来掌握此细节(无需自豪地通过实现我自己的 ListView 重新发明轮子)?

最佳答案

我也需要这样做。我在 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 - Android ListView OnItemClickListener中获取点击坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576728/

相关文章:

Android:将图像存储到项目目录(文件)中?

android - 如何从android java应用程序中的设备获取图像

java - 如何为后续与 HttpClient 的连接存储 cookie

java - 带有部分的 ListView 中的 Itemclick 事件

Android NewBie - setAdapter ListView 面临的问题

android - ImageView 的特定部分可点击

android - 更改 TimePicker watch 内指针的颜色。 Material 设计?

android - 可以为第 3 方启动器中的调整大小和方向更改定义小部件的行为/布局吗?

android - 即使 listView 中有元素,listView.SeptEmptyView 也会始终显示

java - 无法通过 Activity 更新 ListView