假设,我有一个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/

10-11 22:15