首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Activity onTouchEvent 未被呼叫:改用 dispatchTouchEvent 或加入 Toast 驗證

     編輯:程式設計綜合問答

onTouchEvent 可能被子 View(如 Button、ScrollView)攔截消費。若需在 Activity 層級捕獲所有觸摸,可覆寫 dispatchTouchEvent。

驗證方法

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    Log.d("TOUCH", "dispatchTouchEvent: " + ev.getAction());
    Toast.makeText(this, "Touch: " + ev.getAction(), Toast.LENGTH_SHORT).show();
    return super.dispatchTouchEvent(ev);
}

說明

  • dispatchTouchEvent 是觸摸事件分發入口,優先於 onInterceptTouchEvent 和子 View 的 onTouchEvent。
  • 回傳 true 表示事件已消費,不再向下分發(慎用)。
  • 加入 Toast 可快速驗證回調是否觸發(Logcat 可能被過濾)。

最佳實務

  • 若只需處理特定區域觸摸,建議在該 View 設定 OnTouchListener。
  • 全域手勢識別可用 GestureDetector 配合 onTouchEvent。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved