在RecyclerView

时间:2016-09-29 21:54:55

标签: android android-layout android-recyclerview

我有一个对话框片段,其中包含一个涉及RecyclerView上方的titleText的线性布局,而在最底部,在recyclerView下面有一个按钮。

由于recyclerView根据适配器设置的项目数量进行扩展或折叠,因此按钮有时会被截断并且不再显示在屏幕上,因为recyclerView只覆盖整个屏幕。

我的问题是,有没有办法设置recyclerView的最大高度,而不会隐藏下面的按钮。我也不想只是在视图中给出一个随机高度,以防RecyclerView不包含任何项目,而且它只是一个空白部分。

如果您遇到过这个问题,请告诉我,以及您是如何解决这个问题的。谢谢!

2 个答案:

答案 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以你的方式完美地对齐你的视图   想。