3

我无法获得手指移动的第二个视图 ID。我试图在触摸监听器中打印指针使用以下内容的 id。

    case MotionEvent.ACTION_MOVE:
            int pointerCount = event.getPointerCount();
            for (int i = 0; i < pointerCount; i++) {
                //System.out.println(v.getId());
                System.out.println(event.getX() + "---" + event.getY());
                System.out.println(v.getId());
            }
            break;

这里的事件是我的 MotionEvent,v 是视图。我能够获得触摸的 X 和 Y 位置,但我想知道哪个视图被越过。我只得到一直被按下的第一个视图的视图 ID。

我检查了以下链接以获得一些帮助,但无法获得任何相关详细信息。

如何获取移动手指的 ID

检索被点击的视图的 id

如何从android中的视图中获取特定的子视图ID?

有人可以帮我吗?

4

1 回答 1

0

如果您在视图上设置监听器,您将始终在事件中获得该视图。例如

View one = findById(R.id.one);
one.setOnTouchListener(new OnTouchListener()
{
  public void onClick(View v)
  {
      // v == one
  }
})

但是,如果您将 Activity 声明为触摸侦听器:

Activity implements OnTouchListener

然后在根视图上设置监听器:

View rootView = findViewById(R.id.rootView);
rootView.setOnTouchListener(this);

并覆盖 onTouch:

@Override
public boolean onTouch(View v, MotionEvent e) { 
    // here v is what you look for
} 

我认为你应该检查你是否在根视图上设置 onTouchListener 而不是一个特定的视图

于 2015-02-18T08:46:23.917 回答