Как выравнивать элементы в CardView?

У меня есть следующая карточка, которую я хочу повторно использовать в RecyclerView, он содержит фотографию и внизу в левую сторону кнопка и имя, в правую сторону должен быть изображение и TextView, для этого я использовал LinearLayouts, чтобы заключать каждую группу элементов и posicionarlos со свойством "layout_gravity", но мне не удается выровнять их, предварительный вид оказывается таким:

introducir la descripción de la imagen aquí

Мой код XML карточки - следующий:

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cvMascota"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="@dimen/radio"
>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_bone_on"
        android:layout_gravity="center_horizontal"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/margin_datos_arriba"
        >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            >

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/ic_bone_off"
                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/nombre_mascota"
                android:textSize="@dimen/nombre"
                android:textStyle="bold"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="@dimen/margin_nombre_derecha"
                />

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_hueso_count"
                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="4"
                android:textSize="25sp"
                android:textStyle="bold"
                android:layout_gravity="center"
                />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

</android.support.v7.widget.CardView>

Сколько бы в layout_gravity он не поместил "right" или "end" не очевидно никакое изменение.

Как я могу делать для posicionar кость и TextView справа от карточки поддерживая совместимость различными экранами (потому что он мог бы использовать margin или padding, но я хочу выровнять это справа от экрана был размера, которого он)?

Большое спасибо.

1
задан 07.01.2017, 04:41
0 ответов

После многих неудавшихся попыток с android:layout_gravity="right" я нашел другое решение используя android:layoutDirection="rtl" мой код используя первый выбор - следующий, с этим мне не удалось выровнять элементы, которые он хотел:

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cvMascota"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="@dimen/radio"
android:layout_marginBottom="@dimen/margin_entre_tarjetas"
card_view:cardBackgroundColor="@color/tarjeta"
>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >

    <ImageView
        android:id="@+id/imgFoto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_bone_on"
        android:scaleType="centerCrop"
        android:background="@color/blanco"
        android:layout_gravity="center_horizontal"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/margin_datos_arriba"
        android:orientation="horizontal"
        >

        <ImageButton
            android:id="@+id/btnPlus1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/ic_bone_off"
            />

        <TextView
            android:id="@+id/tvNombre"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/nombre_mascota"
            android:textSize="@dimen/nombre"
            android:textStyle="bold"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="@dimen/margin_nombre_derecha"
            />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_gravity="right"
            >

            <ImageView
                android:id="@+id/imgFavs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_hueso_count"
                />

            <TextView
                android:id="@+id/tvFavs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="4"
                android:textSize="25sp"
                android:textStyle="bold"
                android:layout_gravity="center"
                android:layout_marginLeft="@dimen/margin_hueso_favs"
                />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

</android.support.v7.widget.CardView>

Сейчас, мой код, решив проблему, остался так:

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cvMascota"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="@dimen/radio"
android:layout_marginBottom="@dimen/margin_entre_tarjetas"
card_view:cardBackgroundColor="@color/tarjeta"
>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >

    <ImageView
        android:id="@+id/imgFoto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_bone_on"
        android:scaleType="centerCrop"
        android:background="@color/blanco"
        android:layout_gravity="center_horizontal"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/margin_datos_arriba"
        android:orientation="horizontal"
        >

        <ImageButton
            android:id="@+id/btnPlus1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/ic_bone_off"
            />

        <TextView
            android:id="@+id/tvNombre"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/nombre_mascota"
            android:textSize="@dimen/nombre"
            android:textStyle="bold"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="@dimen/margin_nombre_derecha"
            />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layoutDirection="rtl"
            android:layout_marginRight="10dp"
            >

            <TextView
                android:id="@+id/tvFavs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="4"
                android:textSize="25sp"
                android:textStyle="bold"
                android:layout_gravity="center"
                android:layout_marginLeft="@dimen/margin_hueso_favs"
                />

            <ImageView
                android:id="@+id/imgFavs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_hueso_count"
                />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

</android.support.v7.widget.CardView>

Поскольку он может, поверните не было многих изменений кроме того, что использовал layoutDirection и вложил порядок моего TextView и ImageView, я вложил их, потому что, изменив адрес layout, элементы вертятся, а именно, если сначала у меня есть ImageView и потом TextView, применив свойство, у меня окажется первым TextView и потом ImageView, именно поэтому я изменил порядок для того, чтобы они появлялись правильно.

0
ответ дан 03.12.2019, 17:51

Пример:

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1" />

    <LinearLayout
        android:gravity="right"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="3" />
    </LinearLayout>

</LinearLayout>
2
ответ дан 03.12.2019, 17:51
  • 1
    Твой пример функционирует верно, но не из-за qué когда я это помещаю в мой có я говорю, что он ничего не меняет, он extrañ или и правда не qué я врежу, однако encontré другой способ это решать, не используя gravity, publicaré как ответ, чтобы помещать мой có я говорю. Несмотря на то, что оно не будет функционировать или я не смог применять это довольно большое спасибо из-за твоей помощи :) –  09.01.2017, 04:16

Теги

Похожие вопросы