Я пытаюсь разметить простой CardView, где вверху есть текст, а под ним есть пара таких «кнопок». Но я даже не могу заставить макеты правильно выровняться, и я делал это в прошлом (некоторое время назад, должен признать), используя layout_above и layout_below, но они, похоже, больше не доступны. Итак, я пробовал другие способы, основанные на том, что я узнал из документов, но я не думаю, что многому научился ... ясно ...

Чтобы лучше объяснить, что пытается сделать мой код, вот картинка:

CardView with text on the top, a separator and button on the bottom.

Вместо того, чтобы видеть то, что вы видите на картинке выше, все, что я вижу, это два перекрывающихся макета и кнопка, появляющаяся поверх обоих макетов.

<?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
username 23 Дек 2015 в 09:31

3 ответа

Лучший ответ

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
Peter Zhao 23 Дек 2015 в 06:45

Попробуйте это, это легко

 <?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>
-1
Amit Vaghela 23 Дек 2015 в 08:08

Оберните все в 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>
-1
Shvet Chakra 23 Дек 2015 в 06:43