我的活动中有多个视图,包括2个垂直视图(1行)RecyclerViews
。我使用setNestedScrollingEnabled(false)
禁用了RecyclerViews上的滚动,只想使整个Activity可滚动。这没有按预期工作。触摸RecyclerViews
之外的视图(我的AppBarLayout
)触发了滚动,但只要我试图在其中一个RecyclerViews
内滚动,它就不再工作了。我必须将触摸事件传递到我的主视图还是有其他解决方案?
我的布局如下所示(已剥离):
<android.support.design.widget.AppBarLayout>
<android.support.design.widget.CollapsingToolbarLayout>
<RelativeLayout>
<ImageView>
<LinearLayout>
<TextView />
<TextView />
</LinearLayout>
</RelativeLayout>
<android.support.v7.widget.Toolbar />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:scrollbars="none" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:scrollbars="none" />
</LinearLayout>
</LinearLayout>
编辑:刚刚添加了一张图片。触摸红色部分可以按预期滚动整个活动,但触摸蓝色部分不会滚动任何内容。
4条答案
按热度按时间jxct1oxe1#
在嵌套滚动视图中使用回收视图
2ekbmq322#
1.使用
NestedScrollView
作为Button
和RecyclerView
布局的容器。1.将
app:layout_behavior="@string/appbar_scrolling_view_behavior"
设置为NestedScrollView
1.使用
CoordinatorLayout
作为根布局。尝试以下结构:
希望这个能有所帮助~
raogr8fs3#
重写onInterceptTouchEvent方法并返回true。这将停止子级处理触摸事件。
nkcskrwz4#
如果recyclerview被 Package 了,比如说被ConstraintLayout Package 了,那么它首先会被布局到一个固定的高度。一旦发生这种情况,它就会使用自己的机制在你滚动的时候循环行。如果你设置它不滚动,那么它就会这样做,并且保持循环行,所以你可能只会看到一些。
recyclerview需要放在一个容器中,这样它就有空间在没有任何约束的情况下进行扩展。例如,这个解决方案对我来说很有效,我把我的recyclerview Package 在约束布局中间的RelativeLayout中。
如果你只是复制一个解决方案,而不了解如何和为什么,那么你只是黑客。