LinearLayout不会填充父级;相反,如果适合其中的最小宽度视图

时间:2012-10-04 01:57:21

标签: android-layout

我的观点如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingBottom="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<RelativeLayout android:id="@+id/header"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="horizontal" 
    android:paddingTop="5dp"
    android:paddingBottom="10dp"
    android:paddingLeft="15dp"
    android:paddingRight="15dp">

    <ImageView android:id="@+id/title_icon"
        android:layout_width="12dp"
        android:layout_height="12dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_gravity="center_vertical"
        android:src="@drawable/title_icon" />

    <LinearLayout android:id="@+id/title_layout"
        android:layout_toRightOf="@id/title_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="10dp"
        android:orientation="vertical" >

        <TextView android:id="@+id/title_text"
            android:text="@string/activity_complete"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical"
            android:paddingRight="15dp"
            android:textSize="12dp"
            android:textStyle="bold"/>

    </LinearLayout>

    <TextView android:id="@+id/status_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:textSize="8dp" />

</RelativeLayout>

<TextView android:id="@+id/message_text" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="0dp"
    android:layout_marginRight="0dp"
    android:layout_marginBottom="5dp"
    android:paddingLeft="15dp"
    android:textSize="10dp"/>

<ImageView android:id="@+id/main_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/grey"
    android:padding="5dp"/>

</LinearLayout>

我的问题是主要的LinearLayout视图不匹配_parent或fill_parent。它似乎只想包含其中的最小项目。在我的情况下,它将导致与main_image相同的宽度,切断其他所有内容。但是,如果我将main_image设置为visibility.gone,那么它将匹配message_text的宽度。

我已经尝试删除除main_image之外的所有内容,主要的LinearLayout仍然只适合图像宽度。

另一件事是这个布局被膨胀到另一个设置为fill_parent的LinearLayout。

2 个答案:

答案 0 :(得分:3)

将ImageView包装在另一个LinearLayout中解决了这个问题。

答案 1 :(得分:2)

我遇到了这个问题 - 将配置为“match_parent”的LinearLayout添加到另一个LinearLayout,但内部布局没有正确填充外部布局。

最初我这样做是为了添加布局:

LinearLayout inner = getLayoutInflater().inflate(R.layout.inner, null);
outer.addView(inner, 0);

经过几分钟的愤怒之后,我试了一下:

LinearLayout inner = getLayoutInflater().inflate(R.layout.inner, outer);

innerouter父级宽度和高度匹配。