我有一个对话框片段,其中包含一个涉及RecyclerView上方的titleText的线性布局,而在最底部,在recyclerView下面有一个按钮。
由于recyclerView根据适配器设置的项目数量进行扩展或折叠,因此按钮有时会被截断并且不再显示在屏幕上,因为recyclerView只覆盖整个屏幕。
我的问题是,有没有办法设置recyclerView的最大高度,而不会隐藏下面的按钮。我也不想只是在视图中给出一个随机高度,以防RecyclerView不包含任何项目,而且它只是一个空白部分。
如果您遇到过这个问题,请告诉我,以及您是如何解决这个问题的。谢谢!
答案 0 :(得分:4)
<强>已更新强> 您可以使用布局权重轻松实现此目的。这是一个例子:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Title"
android:textSize="21sp"/>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="30dp">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Submit"/>
</FrameLayout>
Title和RecyclerView将根据内容包装内容,按钮将始终占据底部位置。
答案 1 :(得分:0)
我建议使用RelativeLayout
,因为它处理像你这样的案件的视图定位,这样你就可以专注于主设计。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="Some title" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/title"
android:layout_above="@+id/button"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:gravity="center"/>
</RelativeLayout>
上面的XML代码是您需要的框架代码。您可以添加边距和尺寸来控制间距。但无论如何(直到你提供负边距)你的观点永远不会相互重叠。
使用RelativeLayout的主要技巧是能够使用XML标签 android:layout_below或android:layout_above或android:layout_start 或者android:layout_end以你的方式完美地对齐你的视图 想。