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

Android GridView 子項 ImageView 點擊無響應:觸摸事件攔截與返回值問題

     編輯:程式設計綜合問答

現象

在 `getView` 中為 `ImageView` 設置 `setOnClickListener`,點擊無反應,但觸摸事件正常。

根因

`OnTouchListener` 返回 `true` 表示**消費事件**,導致事件不再分發給 `OnClickListener`。GridView 或父佈局可能設置了攔截觸摸的 `OnTouchListener`。

排查步驟

  1. 檢查 `ImageView`、`GridView`、父佈局是否設置 `setOnTouchListener` 並返回 `true`。
  2. 若需同時處理觸摸與點擊,`OnTouchListener` 中**僅處理特定動作(如 ACTION_MOVE),返回 `false` 繼續分發**。

修正示例

imageView.setOnTouchListener((v, event) -> {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        // 僅記錄按下狀態,不消費事件
        return false; // 關鍵:返回 false 讓 ClickListener 接收
    }
    return false;
});
imageView.setOnClickListener(v -> {
    // 點擊邏輯
});

替代方案

  • 使用 `GridView.setOnItemClickListener` 統一處理項點擊,獲取 `position` 更可靠。
  • 若需長按/拖拽,實現 `OnItemLongClickListener` / `OnDragListener`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved