我正在尝试布局一个简单的CardView,其中顶部有文字,在其下方,有几个“按钮”。但我似乎无法让布局正确对齐,而且我在过去(不久前,我必须承认)使用layout_above和layout_below完成了它,但它们似乎不再可用了。基于我从文档中学到的东西,我已经尝试了其他一些方法,但我认为我没有学到太多东西......干净利落......
为了更好地解释我的代码尝试做什么,这是一张照片:
我没有看到你在上面的图片中看到的内容,而是看到两个布局重叠,并且按钮出现在两个布局的顶部。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="fill_parent"
android:layout_height="72dp"
card_view:cardCornerRadius="0.7dp"
card_view:cardElevation="1.0dp"
android:background="@color/cardview_light_background"
android:layout_marginBottom="7dp"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="fill_horizontal"
android:background="@color/linearLayoutBackgroundColor">
<TextView
android:id="@+id/cardViewTextItem"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cardText"
android:padding="7dp"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="fill_horizontal"
android:background="@color/secondLinearLayoutBackgroundColor">
<Button android:text="DETAILS" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/cardview_light_background" />
</RelativeLayout>
</android.support.v7.widget.CardView>
答案 0 :(得分:1)
layout_above和layout_below仅在RelativeLayout中可用。你的xml应该是这样的:
<android.support.v7.widget.CardView
/*some attributes*/ >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
<TextView
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/button"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
答案 1 :(得分:-1)
将所有内容换成linearLayout
并删除嵌套的Relativelayout.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
>
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="72dp"
card_view:cardCornerRadius="0.7dp"
card_view:cardElevation="1.0dp"
android:background="@color/cardview_light_background"
android:layout_marginBottom="7dp"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true">
<TextView
android:id="@+id/cardViewTextItem"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cardText"
android:padding="7dp"/>
<Button android:text="DETAILS" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/cardview_light_background" />
</android.support.v7.widget.CardView>
</LinearLayout>
答案 2 :(得分:-1)
试试这个,很容易
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dip"
android:visibility="visible">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="2">
<LinearLayout
style="@style/Widget.CardContent.TitleBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/textWelCome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="cardText"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
style="@style/Widget.CardContent.TitleBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/textWelCome2"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:layout_marginLeft="175dip"
android:layout_marginTop="2dp"
android:text="DETAILS"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>