在 Android 布局中,RecyclerView 默认有自己的滚动机制,当它嵌套在 ScrollView 中时,可能会出现滚动冲突的问题。你希望阻止内部的 RecyclerView 滑动,同时允许外部的 ScrollView 滑动
以下是一些可以尝试的方法来解决这个问题:
方法一:自定义 RecyclerView
你可以通过自定义 RecyclerView 来禁用其滚动功能。创建一个自定义的 RecyclerView 类,并重写 onTouchEvent 和 onInterceptTouchEvent 方法,使其不处理触摸事件。
java
public class NonScrollableRecyclerView extends RecyclerView {
public NonScrollableRecyclerView(Context context) {
super(context);
}
public NonScrollableRecyclerView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollableRecyclerView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent e) {
// 不处理触摸事件
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
// 不拦截触摸事件
return false;
}
}
然后在你的布局文件中使用这个自定义的 RecyclerView:
xml
<com.yourpackage.NonScrollableRecyclerView
android:id="@id/slot_tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:clipToPadding="false"
android:paddingHorizontal="16dp" />
方法二:设置 RecyclerView 的滚动属性
如果你不想自定义 RecyclerView,可以通过设置 RecyclerView 的滚动属性来限制其滚动。在代码中设置 RecyclerView 的 LayoutManager 的滚动方向为水平方向(LinearLayoutManager.HORIZONTAL),这样它就不会垂直滚动了。
java
RecyclerView recyclerView = findViewById(R.id.slot_tabs);
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(layoutManager);

1173

被折叠的 条评论
为什么被折叠?



