ViewGroupによるタッチイベントの管理
ViewGroupにおけるタッチイベントの管理
onInterceptTouchEvent()
メソッドをオーバーライドすることで、サブビューに対して、タッチイベントを発生させないようにすることができる。
class MyViewGroup @JvmOverloads constructor( context: Context, private val mTouchSlop: Int = ViewConfiguration.get(context).scaledTouchSlop ) : ViewGroup(context) { override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { if (mIsScrolling) { // サブビューに対してタッチイベントが発生させないようにし、自身のタッチイベントが発生するようにする。 return true } else { // サブビュー側のタッチイベントが呼び出される return false } }
サブビューは、ViewGroupのrequestDisallowInterceptTouchEvent(boolean)
メソッドを通じて、横取りしないように要求することもできる。