禁止RecyclerView滑动
时间: 2023-09-04 08:15:37 浏览: 45
要禁止 RecyclerView 滑动,可以使用以下代码:
```
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()){
@Override
public boolean canScrollVertically() {
return false;
}
});
```
其中,`setNestedScrollingEnabled(false)` 禁止了嵌套滑动,`canScrollVertically()` 返回 false 禁止了垂直滑动。如果需要禁止水平滑动,可以重写 `canScrollHorizontally()` 方法并返回 false。
相关问题
设置recyclerview禁止触摸滑动
你可以使用 `setNestedScrollingEnabled(false)` 方法来禁止 `RecyclerView` 的滑动,代码如下:
```java
recyclerView.setNestedScrollingEnabled(false);
```
此外,你还可以通过在布局文件中设置 `app:layout_behavior="@string/appbar_scrolling_view_behavior"` 来禁止 `RecyclerView` 在 `CoordinatorLayout` 中滑动,代码如下:
```xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
```
RecyclerView dispatchTouchEvent 禁止滑动但是可以点击item
你可以在RecyclerView的onTouchListener中拦截触摸事件,然后根据需要进行处理。下面是一个实现禁止滑动但是可以点击item的示例代码:
```
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
// 禁止滑动
return true;
}
return false;
}
});
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
// 处理item点击事件
if (e.getAction() == MotionEvent.ACTION_UP) {
View childView = rv.findChildViewUnder(e.getX(), e.getY());
if (childView != null && listener != null) {
listener.onItemClick(childView, rv.getChildAdapterPosition(childView));
return true;
}
}
return super.onInterceptTouchEvent(rv, e);
}
});
```
在onTouchListener中,我们拦截了滑动事件(ACTION_MOVE),并返回true,这样就可以禁止RecyclerView的滑动了。而在addOnItemTouchListener中,我们处理了item的点击事件(ACTION_UP),并在回调中返回true,表示我们已经处理了该事件,不需要让RecyclerView再进行处理。