布局中的元素不会根据权重调整大小

时间:2013-04-26 12:31:12

标签: android android-layout

在下面的布局中,EditText(蓝色背景色)不可见,它有0宽度,微调器占用所有空间。为什么呢?

<TableRow
    android:layout_width="match_parent"
    android:gravity="center_vertical" >

    <TextView
        style="@style/Label.Plain"
        android:layout_width="fill_parent"
        android:layout_marginTop="3dp"
        android:layout_weight="0"
        android:text="@string/Distance" />

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

        <EditText
            android:id="@+id/et_hfDistance"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/button_height"
            android:layout_weight="1"
            android:background="#ff0000ff"
            android:inputType="numberDecimal"
            android:selectAllOnFocus="true"
            android:textSize="@dimen/spinner_text" />

        <Spinner
            android:id="@+id/sp_hfDistanceUnits"
            style="@style/Spinner"
            android:layout_width="fill_parent"
            android:layout_weight="0"
            android:background="#ff00ff00"
            android:padding="0dp" />
    </LinearLayout>
</TableRow>

1 个答案:

答案 0 :(得分:2)

因为您设置了父android:layout_width="fill_parent",并且两个孩子的宽度相似,所以权重会被反过来考虑。

real weight = (1/weight) / sum((1/weight) for weight in the layout)

因此,EditText的实际权重为1,而微调器的实际权重为1/0 =无穷大。相比之下,EditText不再可见,并且微调器占用了所有空间。

要更改此行为,请更改微调器和EditText android:layout_width="0dp"