Frame Layout фиксированные элементы по высоте wrap_content

У меня есть следующий дизайн:

Актуальный дизайн приложения

КОД:

<LinearLayout
android:id="@+id/edit_name"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#99000000"
android:weightSum="1">

<FrameLayout
    android:background="@color/tabIndicator"
    android:layout_width="310dp"
    android:layout_gravity="center"
    android:clickable="true"
    android:layout_height="wrap_content"
    android:minHeight="136dp"
    android:layout_weight="0.75">

    <TextView
        android:id="@+id/close_circle"
        android:elevation="2dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="X"
        android:background="@drawable/oval_corner"
        android:backgroundTint="@color/colorPrimary"
        android:layout_gravity="top|bottom|right"
        android:layout_alignParentEnd="true"
        android:paddingLeft="8dp"
        android:paddingTop="3dp"
        android:paddingRight="8dp"
        android:paddingBottom="3dp"
        android:textColor="@color/tabIndicator"
        android:textStyle="bold"
        android:layout_margin="2dp"
        android:translationZ="2dp">
    </TextView>

    <TextView
        android:id="@+id/textDescLarga"
        android:layout_width="match_parent"
        android:layout_height="208dp"
        android:text="@string/text_placeholder_benefit"
        android:textStyle="normal"
        android:textSize="12dp"
        android:textColor="@color/textDefault"
        android:layout_gravity="bottom|center"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:maxLines = "12"
        android:scrollbars="vertical">
    </TextView>

    <ImageView
        android:id="@+id/imageMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:src="@drawable/placeholder_benefit"
        android:layout_gravity="top|left">

    </ImageView>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/textTitulo"
        android:layout_gravity="center"
        android:layout_marginBottom="0dp"
        android:text="Nombre hotel"
        android:textAlignment="center"
        android:textStyle="bold"
        android:textSize="19dp"
        android:textColor="@color/cardview_dark_background"/>

</FrameLayout>

ПРОБЛЕМА:

Когда мне нужна автоматическая высота, для текста, увеличивается или уменьшается, я пробовал Fragment Layout layout_height: wrap_content, но текст накладывается на изображение.

Что я делаю неправильно? Есть ли другой способ сделать это?

Спасибо

1 ответ

FrameLayout отображает дочерние элементы в стеке - один поверх другого, если вы не используете layout_gravity для их размещения. FrameLayout обычно используется со всем доступным пространством экрана - layout_height и layout_width установлены в соответствии с родительским.

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

Другие вопросы по тегам