我在RecyclerView
中有一个CardView
,但是我有一个问题,我在RecyclerView
的底部有2个按钮,因此我将它们放在RelativeLayout
的末尾,给他们parent_bottom
为真,这样我就可以使它们可见,但是无论CardView
是否有物品,这都使RecyclerView
具有全屏显示。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
app:cardElevation="8dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:padding="8dp">
<TextView
android:id="@+id/activeInspections"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=" Your active inspections"
android:textSize="18sp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rvActiveInspections"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/btnClear"
android:layout_below="@+id/activeInspections"
android:layout_marginTop="8dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_alignParentBottom="true"
android:layout_marginTop="8dp"
android:id="@+id/btnClear"
android:background="?selectableItemBackground"
android:text="CLear" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:id="@+id/btnContinue"
android:layout_alignParentBottom="true"
android:background="?selectableItemBackground"
android:text="Continue"
android:textColor="@color/blue_normal" />
</RelativeLayout>
</android.support.v7.widget.CardView>
当我尝试另一件事时,下面的代码将其设置为RecyclerView
之下,因此它固定在大小写和其他情况下,如图所示(底部的按钮未显示)
那么如何解决呢?
<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="match_parent">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
app:cardElevation="8dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:padding="8dp">
<TextView
android:id="@+id/activeInspections"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=" Your active inspections"
android:textSize="18sp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rvActiveInspections"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/activeInspections"
android:layout_marginTop="8dp" />
<Button
android:id="@+id/btnClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/rvActiveInspections"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:background="?selectableItemBackground"
android:text="CLear" />
<Button
android:id="@+id/btnContinue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/rvActiveInspections"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:background="?selectableItemBackground"
android:text="Continue"
android:textColor="@color/blue_normal" />
</RelativeLayout>
</android.support.v7.widget.CardView>
目标是这个,并且当项目展开时,它仅适合屏幕,不会超出它
答案 0 :(得分:1)
首先,您可以通过将relativelayout
内的CardView
更改为LinearLayout
并为按钮创建嵌套的相对布局来解决。为了避免嵌套布局,请尝试下面的代码来帮助您。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
app:cardElevation="8dp">
<TextView
android:id="@+id/activeInspections"
android:layout_width="match_parent"
android:layout_height="25dp"
android:text=" Your active inspections"
android:textSize="18sp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rvActiveInspections"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="60dp"
android:layout_marginTop="25dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:id="@+id/btnClear"
android:layout_gravity="bottom"
android:background="?selectableItemBackground"
android:text="CLear" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:id="@+id/btnContinue"
android:layout_gravity="bottom|end"
android:background="?selectableItemBackground"
android:text="Continue"
android:textColor="@color/bb_darkBackgroundColor" />
</android.support.v7.widget.CardView>
</LinearLayout>
根据需要调整recylerview的上边距和下边距。
答案 1 :(得分:1)
只需使Recyclerview的权重= 1,这意味着父级应该是LinearLayout 请检查下面的代码
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
app:cardElevation="8dp">
<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/activeInspections"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text=" Your active inspections"
android:textSize="18sp"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/rvActiveInspections"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
/>
<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:background="?selectableItemBackground"
android:text="CLear" />
<Button
android:id="@+id/btnContinue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginRight="8dp"
android:background="?selectableItemBackground"
android:text="Continue"
android:textColor="@color/blue_normal" />
</android.support.v7.widget.LinearLayoutCompat>
</android.support.v7.widget.LinearLayoutCompat>
</android.support.v7.widget.CardView>
答案 2 :(得分:0)
尝试将RelativeLayout
内的CardView
内的LinearLayout
更改为垂直方向。
答案 3 :(得分:0)
请使用以下代码。一切正常。
<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="match_parent">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
app:cardElevation="8dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:padding="8dp">
<TextView
android:id="@+id/activeInspections"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=" Your active inspections"
android:textSize="18sp" />
<LinearLayout
android:id="@+id/bottomLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/btnClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/rvActiveInspections"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:background="?selectableItemBackground"
android:text="CLear" />
<Button
android:id="@+id/btnContinue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/rvActiveInspections"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:textColor="@color/blue_normal"
android:background="?selectableItemBackground"
android:text="Continue" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rvActiveInspections"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottomLayout"
android:layout_below="@+id/activeInspections"
android:layout_marginTop="8dp" />
</RelativeLayout>
</android.support.v7.widget.CardView>