使布局的最小宽度与内部视图的宽度匹配

时间:2015-01-27 10:24:21

标签: android android-layout

我的应用上有以下多列布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:mcare="http://schemas.android.com/apk/res/com.vodafone.mCare"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="3" >

    <LinearLayout
        android:id="@+id/container1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/label1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello world" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/container2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/label2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hi" />

    <LinearLayout
        android:id="@+id/container3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/label3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hi" />
    </LinearLayout>

    ...etc...

</LinearLayout>

当有足够的空间时,所有列都应该均匀分布。

此处的目标是强制container1的(并且只有container1)个最小宽度以匹配其子视图的相同宽度(label1。无论是否有足够的空间显示其内容,所有其他列应在整个可用空间中均匀调整大小。这是我正在尝试做的粗略图表:

Screenshot

我尝试了很多不同的方法但到目前为止似乎没有任何工作。有任何想法吗?提前感谢任何建议。

编辑:请注意,上面的布局只是应用程序实际布局的简化版本。所有容器实际上都有更多的View内部 - container1除外。换句话说,只有label1可以移动到其各自的容器之外。

1 个答案:

答案 0 :(得分:-1)

删除TextView内的嵌套LinearLayout

试试这样:

  <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:weightSum="3">


            <TextView
                android:id="@+id/label1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:background="@android:color/holo_red_light"
                android:text="Hello world" />


            <TextView
                android:id="@+id/label2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:background="@android:color/holo_red_light"
                android:text="Hi" />


            <TextView
                android:id="@+id/label3"
                android:layout_width="0dp"
                android:gravity="center_horizontal"
                android:background="@android:color/holo_red_light"
                android:layout_height="wrap_content"

                android:layout_weight="1"
                android:text="Hi" />


        </LinearLayout>

********Edited Answer*************

I have try it with `TextView` inside `LinearLayout` as well, it's working fine:

 <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="3">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/label1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:background="@android:color/holo_red_light"
                android:text="Hello world" />
        </LinearLayout>


        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/label2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:background="@android:color/holo_red_light"
                android:text="Hi" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/label3"
                android:layout_width="match_parent"
                android:gravity="center_horizontal"
                android:background="@android:color/holo_red_light"
                android:layout_height="wrap_content"
                android:text="Hi" />

        </LinearLayout>


    </LinearLayout>

如果没有完整的XML文件,我们无法帮助您。