我在这里面临着一个棘手的情况,我不知道如何解决这个问题。
在我的项目中,我有一个自定义progress
,在布局中有一个if(progress)
,用于添加或替换BottomSheetDialogFragment
。
现在我有一个FrameLayout
,内部有一个Fragment
的{{1}},因为我希望Fragment
仅使用必要的空间。一切看起来都很不错,当我将另一个视图放入相同布局并在该视图的下方设置RecyclerView
时,问题就会出现。
height:="wrap_content"
会忽略另一个视图(或多个视图)的大小,并且始终会放大到最大屏幕大小,因此就无法看到几个元素甚至滚动。
我看到了一个solution,一些开发人员建议添加等于视图高度的BottomSheetDialogFragment
。但就我而言,这是行不通的,因为我想拥有一个动态的解决方案。
上面,我将与问题分享一些图片,并与示例分享GitHub Repository。
答案 0 :(得分:2)
我已经完成了您需要做的事情,只需要使用它作为您的 fragment_sample.xml :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/rclItems"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
<Button
android:id="@+id/btnAddMoreItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/rclItems"
android:text="@string/add_1_item"/>
</LinearLayout>
说明 使用LinearLayout使您可以处理重量,并且垂直方向可以将项目放置在另一个项目的下方。 recyclerview上的重量将根据需要增加其高度,直到填满屏幕为止。您添加的下一项将会添加到recyclerview中,但是您需要滚动列表才能看到它
答案 1 :(得分:-1)
android开发人员博客说:-
底部工作表中的滚动容器必须支持嵌套滚动。
尝试如下更改fragment_sample.xml
,以使recyclerview
滚动正常工作,并使添加按钮保持不变。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:id="@+id/next"
android:layout_above="@id/btnAddMoreItems"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/rclItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</android.support.v4.widget.NestedScrollView>
<Button
android:id="@+id/btnAddMoreItems"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content"
android:text="@string/add_1_item"/>
</RelativeLayout>
注意:将底部工作表布局设为CoordinatorLayout
的子视图将使您能够获取工具BottomSheetBehavior并接收其过渡回调。