私はすべてのセルがカスタムビューであるRecyclerViewを持っています。私のカスタムビューでは、ボタンのようなものがあります。ユーザーがこのボタンを長押しすると、スワイプジェスチャーを行うことができます。RecyclerViewセルはRecyclerViewsタッチイベントを消費できますか?
しかし、ときにユーザが上下にスクロールRecyclerViewをスワイプ。
私のカスタムビューをスクロールするRecyclerView beginn前にこのスワイプジェスチャーを消費することはできますか?私はGestureDetector
を実装し、私のカスタムビューで
。今まではクリックと長押しのために働いています。私はまた、boolean onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
を上書きし、スクロールイベントがとにかく消費が、RecyclerViewをスクロールさを示すために、true
を返します。
EDIT:
ここに私のコード(抜粋):
class EventListView(context: Context, attrs: AttributeSet) : View(context, attrs),
GestureDetector. OnGestureListener, GestureDetector.OnDoubleTapListener {
private val gestureDetector: GestureDetector
init {
gestureDetector = GestureDetector(context, this)
}
override fun onTouchEvent(event: MotionEvent?): Boolean {
var result = gestureDetector.onTouchEvent(event);
if (!result) {
if (event?.action == MotionEvent.ACTION_UP) {
Timber.i("ACTION_UP")
animateAlpha(alpha, 0)
result = true;
}
}
return result;
}
//
// OnGestureListener
//
override fun onDown(e: MotionEvent): Boolean {
return isInside(e)
}
override fun onShowPress(e: MotionEvent) {
if (isInside(e))
showPressState()
}
override fun onSingleTapUp(e: MotionEvent): Boolean {
return false
}
override fun onLongPress(e: MotionEvent) {
}
override fun onScroll(e1: MotionEvent, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
return true
}
override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
return true
}
//
// OnDoubleTapListener
//
override fun onSingleTapConfirmed(e: MotionEvent): Boolean {
return false
}
override fun onDoubleTap(e: MotionEvent): Boolean {
return false
}
override fun onDoubleTapEvent(e: MotionEvent): Boolean {
return false
}
}
あなたは意味がありません。何をやっている場合は、人々が自分自身のため見ることができますので、あなたのコードを表示したい場合がありますスクロールを停止します。 –
コードスニペットを追加しました。これはKotlinに書かれています –