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

时间:2016-10-26 17:20:57

标签: android android-layout android-framelayout

我有下一个设计:

Actual design app

CODE:

<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但文本重叠图像。

我做错了什么?还有另一种方法吗?

由于

1 个答案:

答案 0 :(得分:1)

FrameLayout将其中的子项呈现在堆栈中 - 除非您使用layout_gravity来定位它们,否则将其叠加在另一个上面。 FrameLayout通常与整个可用屏幕空间一起使用 - layout_height和layout_width设置为匹配parent。

您的问题是因为您将layout_height设置为包装内容,它会将窗口小部件叠加在另一个上面。将layout_height设置为与parent匹配。或者更好的是,使用RelativeLayout。