回答編集履歴
1
GridViewのスクロールについて追記
answer
CHANGED
@@ -9,8 +9,6 @@
|
|
9
9
|
}
|
10
10
|
```
|
11
11
|
|
12
|
-
---
|
13
|
-
|
14
12
|
ViewGroupを継承したクラスを用意したくない場合は、[CoordinatorLayout.Behavior](https://developer.android.com/reference/androidx/coordinatorlayout/widget/CoordinatorLayout.Behavior)を使うという方法もあります。CoordinatorLayoutでViewGroupを囲んで、ViewGroupにはonInterceptTouchEventを実装したCoordinatorLayout.Behaviorを設定すればOKです。
|
15
13
|
|
16
14
|
```java
|
@@ -22,4 +20,17 @@
|
|
22
20
|
return super.onInterceptTouchEvent(parent, child, ev);
|
23
21
|
}
|
24
22
|
});
|
23
|
+
```
|
24
|
+
|
25
|
+
---
|
26
|
+
|
27
|
+
**追記**
|
28
|
+
|
29
|
+
GridViewはスクロールのジェスチャーを検出すると、親ViewGroupのonInterceptTouchEventを呼ばれなくするメソッド([requestDisallowInterceptTouchEvent](https://developer.android.com/reference/android/view/ViewParent.html#requestDisallowInterceptTouchEvent(boolean)))を呼んでしまいます。これを回避するにはGridViewのスクロール処理が発生しないようにする必要がありますが、それ用のAPIは用意されていないようなので以下のようにACTION_MOVEのタッチイベントを奪うことで対応できます。
|
30
|
+
|
31
|
+
```java
|
32
|
+
// ACTION_MOVEのタッチイベントをGridViewに渡さないようにする
|
33
|
+
gridView.setOnTouchListener((v, event) ->
|
34
|
+
event.getAction() == MotionEvent.ACTION_MOVE
|
35
|
+
);
|
25
36
|
```
|