我有一个BottomsheetDialogFragment,它有一个带有recyclerview的普通Fragment。问题是我无法滚动recyclerview。
我曾考虑过使用NestedScrollView,但是我在片段中具有搜索功能。当键盘弹出时,它可以正常工作,但是一旦键盘隐藏了底板的过渡,就无法正常工作。因此,我无法使用它。
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/whitebackground"
android:focusable="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/whitebackground"
>
</RelativeLayout>
</android.support.design.widget.CoordinatorLayout>
在运行时,我正在放大包含recyclerview的布局。
答案 0 :(得分:0)
由于问题是从键盘开始的,因此您可以尝试在AndroidManifest.xml中的活动定义中添加以下行。此行将确保当键盘弹出时,您的视图不会调整大小。
<activity...
android:windowSoftInputMode="adjustResize"
.../>
并且您应该添加到协调器布局
android:fitsSystemWindows="true"
答案 1 :(得分:0)
您可以在片段或活动中使用isNestedScrollingEnabled属性。
recyclerOuter.isNestedScrollingEnabled = false
答案 2 :(得分:0)
您想为 recyclerview 而不是 BottomSheet 布局拦截触摸事件。 当您触摸以滚动底部布局中的事件触发器而不是回收站视图时的默认设置。使用下面的代码强行拦截recyclerview的触摸事件
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewNotes"
android:layout_width="match_parent"
android:focusableInTouchMode="true"
android:layout_height="match_parent"/>
recyclerViewNotes?.setOnTouchListener { v, event ->
v.parent.requestDisallowInterceptTouchEvent(true)
v.onTouchEvent(event)
true
}