检测您的手指在Android中滑过哪个视图

Tim*_*Tim 8 android view detection

虽然过去曾提出过类似的问题,但似乎并没有真正得到回答,这可能是由于对所提问题的混淆.

简而言之,当手指滑过屏幕时,我想检测输入的是哪个视图.最好的例子是任何Android手机上的软键盘.当你按任意键时,它会显示为一个弹出窗口,告诉你手指下面有什么字母.如果您现在用一个手势在键盘上移动手指,当您在字母表的各个字母上移动时,会弹出各种字母.

哪种侦听器用于此类行为.我已经尝试过OnTouchListeners,但它们似乎只有当你"触摸"按钮而不是"手指过去"它们时

Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {doStuff();}
});

button.setOnTouchListener(new OnTouchListener() {
  @Override
  public boolean onTouch(View v, MotionEvent event) {
      doStuff();
      return false;
  }
});
Run Code Online (Sandbox Code Playgroud)

OnFocusChangeListener 也没有帮助.

小智 5

  • 创建一个布局
  • 将视图添加到您的布局
  • 将setOnTouchListener设置为Layout
  • 使用以下内容覆盖onTouch方法:

    public boolean onTouch(View v, MotionEvent event) 
    {
       LinearLayout layout = (LinearLayout)v;
    
        for(int i =0; i< layout.getChildCount(); i++)
        {
    
            View view = layout.getChildAt(i);
            Rect outRect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
            if(outRect.contains((int)event.getX(), (int)event.getY()))
            {
                                 // over a View
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)


Tim*_*Tim 0

简单的答案是你不能 - 不像 iPhone 在辅助功能模式下那样。

直到冰淇淋三明治。它现在具有类似 iPhone 的功能,无需抬起手指即可识别手指下的元素。