在下面的布局中,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>
答案 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"