wrap_content 高度上的框架布局固定元素

Frame Layout fixed elements on wrap_content height

我有下一个设计:

Actual design app

代码:

<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>

问题:

当我需要自动高度时,在文本上,无论是增加还是减少,我尝试了片段布局layout_height:wrap_content但是文本与图像重叠。

我做错了什么?还有其他方法吗?

谢谢

FrameLayout 在堆栈中呈现它的子项 - 一个在另一个之上,除非您使用 layout_gravity 来定位它们。 FrameLayout 通常用于整个可用屏幕 space - layout_height 和 layout_width 设置为与父级匹配。

您的问题是因为您将 layout_height 设置为包装内容,它会将小部件一个接一个地叠加。设置 layout_height 以匹配父级。或者对你的情况更好,使用 RelativeLayout。