代码之家  ›  专栏  ›  技术社区  ›  Sattar

如何使CardView和CardView内的RecyclerView有它的大小,当它有低项目

  •  1
  • Sattar  · 技术社区  · 7 年前

    我有一个 RecyclerView CardView 但我有一个问题,我有两个按钮在底部的 所以我把它们放在 RelativeLayout 把它们给我 parent_bottom 卡德维尤 全屏显示 回收视图 有不属于的项目。

    Xml代码:

    <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>
    

    Like this

    当我试着做另一件事的时候,下面的代码使它们低于 所以它固定在case中,另一个case如图所示(底部的按钮未显示)

    那么如何解决这个问题呢?

    <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>
    

    Buttons at the bottom not shown

    enter image description here

    4 回复  |  直到 7 年前
        1
  •  1
  •   Mohamed Mohaideen AH    7 年前

    relativelayout CardView LinearLayout 并为按钮创建嵌套的relativelayouts。为了避免嵌套的布局尝试我下面的代码将帮助你。。

    <?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上下边距。

        2
  •  1
  •   Mina Fawzy    7 年前

    只需使Recyclerview weight=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>
    

        3
  •  0
  •   Aanchal Garg    7 年前

    尝试更改 RelativeLayout 内部 CardView LinearLayout

        4
  •  0
  •   Shohel Rana    7 年前

    请使用下面的代码。它工作得很好。

    <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>