通常我們在處理控件(view)touch事件的時候,會發生獲取不到ACTION_DOWN事件的情況。
例如,運行以下代碼後,在屏幕上無論如何點擊、長按、滑動這個控件(view),logcat上只能看到 ACTION_DOWN 的輸出
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e("","ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:
Log.e("","ACTION_MOVE");
break;
case MotionEvent.ACTION_UP:
Log.e("","ACTION_UP");
break;
}
return false;
}
});
解決辦法:
在目標控件(view)的佈局中,添加屬性:android:clickable="true"
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />