我'm creating a slot machine application and for this I'm使用 RecycleView 作为铁路 . 因此, RecyclerView 禁用所有touch \ click \ scroll事件 .
为了使"spin"我使用 RecyclerView.fling(...) 方法,因为它有更好的动画 .
BUT 当我触摸回收者视图时,突然停止了 . Why? And how can I disable this?
XML:
android:id="@+id/rv_rail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/margin_4"
android:layout_marginStart="@dimen/margin_4"
android:layout_weight="1"
android:padding="@dimen/dp_16"/>
RecyclerView的init:
LinearLayoutManager mRailLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mRailsBinding.rvRail.setHasFixedSize(true);
new LinearSnapHelper().attachToRecyclerView(mRailsBinding.rvRail);
mRailsBinding.rvRail.setLayoutManager(mRailLayoutManager);
mRailsBinding.rvRail.addOnItemTouchListener(new RecyclerViewDisabler());
mRailsBinding.rvRail.addOnScrollListener(railScrollListener); //checking here for time when scroll ended
mRailsBinding.rvRail.setAdapter(mRailAdapter);
适配器没什么特别的 . 它只是在视图中,并且没有click \ touch evenets .
RecyclerViewDisabler:
public class RecyclerViewDisabler implements RecyclerView.OnItemTouchListener {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
return true;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean state) {}
}