如何让Android LinearLayout权重的值为1和2?

时间:2011-04-30 00:58:04

标签: android android-layout textview android-linearlayout android-layout-weight

我正在尝试创建一个有三行的LinearLayout,每行高度相等。我在主要内部使用3个LinearLayouts创建它,每个都有一个layout_weight为1。

中间的LinearLayout应该包含一个ImageView,TextView,ImageView,权重为1,2,1。为此,在中间的LinearLayout中创建了另一个3。

我希望TextView的大小是每个ImageView的两倍。如果您看到下面的代码,当内部LinearLayouts的layout_weight为1时,我没有问题,这三个看起来大小相同。但是当我将中间的(id = textLayout)设置为layout_weight=2时,它会完全消失(如Eclipse图形布局查看器中所示),只有其他两个可见。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/fondo"
    android:gravity="center_vertical|center_horizontal">

    <LinearLayout
        android:id="@+id/LayoutTop"
        android:orientation="horizontal"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_weight="1">
    </LinearLayout>

    <LinearLayout
        android:id="@+id/LayoutMid"
        android:orientation="horizontal"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_weight="1">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            android:layout_weight="1">
            <ImageView
                android:layout_height="fill_parent"
                android:layout_width="fill_parent">
            </ImageView>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/textLayout"
            android:orientation="horizontal"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            android:layout_weight="2">
            <TextView
                android:text="Status"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
            </TextView>
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            android:layout_weight="1">
            <ImageView
                android:layout_height="fill_parent"
                android:layout_width="fill_parent">
            </ImageView>
        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/LayoutBottom"
        android:orientation="horizontal"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_weight="1">
    </LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

您不需要额外的布局来适当地间隔中间行,并且您的权重是向后的。如果您希望文本是外部图像的2倍,则希望它为1,外部列为1.5

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical">
    <LinearLayout android:id="@+id/LayoutTop"
        android:orientation="horizontal" android:layout_height="0dp"
        android:layout_width="fill_parent" android:layout_weight="1" android:background="#ffff0000"/>


    <LinearLayout android:id="@+id/LayoutMid"
        android:orientation="horizontal" android:layout_height="0dp"
        android:layout_width="fill_parent" android:layout_weight="1">

        <ImageView android:layout_height="fill_parent"
            android:layout_width="fill_parent" android:background="@drawable/icon"
            android:layout_weight="1.5" />
        <TextView android:layout_height="fill_parent" android:id="@+id/TextView01"
            android:layout_weight="1" android:text="Status" android:layout_width="fill_parent" />
        <ImageView android:layout_height="fill_parent"
            android:layout_weight="1.5" android:background="@drawable/icon"
            android:layout_width="fill_parent" />
    </LinearLayout>

    <LinearLayout android:id="@+id/LayoutBottom"
        android:orientation="horizontal" android:layout_height="0dp"
        android:layout_width="fill_parent" android:layout_weight="1" android:background="#ff00ff00"/>


</LinearLayout>

我使用了一个图标(如果你有的话)将图片放在中间行,并在顶部和底部放置一些颜色以更清楚地显示间距。