Android Cardview 元素相互堆叠

Raf*_*afa 1 android material-design android-cardview

我有cardview如下所示的布局,但文件中的两个元素彼此堆叠。我读过其他帖子,说要能够更有效地分隔元素,您必须在 内有另一个布局cardview,但它对我不起作用。如果我添加 aandroid:layout_above...那么其中一个元素就会消失。我想要一个元素高于另一个元素。谁能指出我做错了什么?

\n\n

在此输入图像描述

\n\n
<android.support.v7.widget.CardView\n    xmlns:card_view="http://schemas.android.com/apk/res-auto"\n    android:id="@+id/currentData"\n    android:layout_width="match_parent"\n    android:layout_height="wrap_content"\n    card_view:cardCornerRadius="4dp"\n    card_view:cardBackgroundColor="@color/orange">\n\n    <RelativeLayout\n        android:id="@+id/cardviewLayout"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_gravity="center"\n        android:padding="10dp"\n        android:orientation="vertical">\n\n        <TextView\n            android:id="@+id/time"\n            tools:text="this is the time"\n            android:layout_width="wrap_content"\n            android:layout_height="wrap_content"\n            android:layout_centerHorizontal="true"\n            android:layout_centerVertical="true"\n            android:layout_above="@+id/temperature"\n            android:textColor="@color/white"/>\n\n        <TextView\n            android:id="@+id/temperature"\n            tools:text="50\xc2\xb0"\n            android:layout_width="wrap_content"\n            android:layout_height="wrap_content"\n            android:layout_centerHorizontal="true"\n            android:layout_centerVertical="true"\n            android:textSize="50sp" />\n\n    </RelativeLayout>\n\n</android.support.v7.widget.CardView>\n
Run Code Online (Sandbox Code Playgroud)\n

Nik*_*ono 5

您可以使用 LinearLayout 而不是relativelayout

\n\n
<android.support.v7.widget.CardView\n    xmlns:card_view="http://schemas.android.com/apk/res-auto"\n    android:id="@+id/currentData"\n    android:layout_width="match_parent"\n    android:layout_height="wrap_content"\n    card_view:cardCornerRadius="4dp"\n    card_view:cardBackgroundColor="@color/orange">\n\n    <LinearLayout\n        android:id="@+id/cardviewLayout"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_gravity="center"\n        android:padding="10dp"\n        android:weightSum="2"\n        android:orientation="vertical">\n\n        <TextView\n            android:id="@+id/time"\n            tools:text="this is the time"\n            android:layout_width="wrap_content"\n            android:layout_height="0dp"\n            android:layout_above="@+id/temperature"\n            android:weight="1"\n            android:textColor="@color/white"/>\n\n        <TextView\n            android:id="@+id/temperature"\n            tools:text="50\xc2\xb0"\n            android:layout_width="wrap_content"\n            android:layout_height="0dp"\n            android:weight="1"\n            android:textSize="50sp" />\n\n    </LinearLayout>\n\n</android.support.v7.widget.CardView>\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者如果你想使用RelativeLayout你可以使用这个技巧

\n\n
<android.support.v7.widget.CardView\n    xmlns:card_view="http://schemas.android.com/apk/res-auto"\n    android:id="@+id/currentData"\n    android:layout_width="match_parent"\n    android:layout_height="wrap_content"\n    card_view:cardCornerRadius="4dp"\n    card_view:cardBackgroundColor="@color/orange">\n\n    <RelativeLayout\n        android:id="@+id/cardviewLayout"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_gravity="center"\n        android:padding="10dp"\n        android:orientation="vertical">\n\n        <View\n            android:id="@+id/anchor_view"\n            android:layout_width="0dp"\n            android:layout_height="0dp"\n            android:layout_centerInParent="true"/>\n\n        <TextView\n            android:id="@+id/time"\n            tools:text="this is the time"\n            android:layout_width="wrap_content"\n            android:layout_height="match_parent"\n            android:layout_centerHorizontal="true"\n            android:layout_centerVertical="true"\n            android:layout_above="@+id/anchor_view"\n            android:textColor="@color/white"/>\n\n        <TextView\n            android:id="@+id/temperature"\n            tools:text="50\xc2\xb0"\n            android:layout_width="wrap_content"\n            android:layout_height="match_parent"\n            android:layout_centerHorizontal="true"\n            android:layout_centerVertical="true"\n            android:layout_below="@+id/anchor_view"\n            android:textSize="50sp" />\n\n    </RelativeLayout>\n\n</android.support.v7.widget.CardView>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样,锚视图将位于父视图的中间,但不会被绘制,因为宽度和高度为零,但它将成为时间和温度的参考,因此时间将填充上半部分,温度将填充填充下半部分

\n