我见过几个使用的例子 android:layout_height =“0px”或“0dip”但我不明白这个的影响。似乎这将使布局高0像素。是否减轻了价值,但还有一些其他因素,如“权重”或任何父视图的高度?
答案 0 :(得分:34)
你是否对重量是正确的,当你想要按重量控制宽度或高度时,将该值设置为0dip并让重量控制实际值。虽然我很确定0在这里是任意的,你可以放任何东西,但是把0放在一起会让你的意图更清晰。
答案 1 :(得分:11)
如果将layout_weight
设置为非零值并将layout_height
(或layout_width
)设置为0px或0dip,则使用LinearLayout时,LinearLayout会分配任何未分配的空格基于权重的适当轴。例如,如果您查看带有ID * gestures_overlay *的视图下方的布局,则它具有layout_height
0dip和layout_weight
1,因此父LinearLayout会对其进行拉伸以填充2周围的LinearLayouts之间的可用垂直空间。如果另一个视图具有相同的0dip layout_height
和layout_weight
值,则他们将根据其权重值共享垂直空间。
<?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:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
android:text="@string/prompt_gesture_name"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/gesture_name"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:maxLength="40"
android:singleLine="true" />
</LinearLayout>
<android.gesture.GestureOverlayView
android:id="@+id/gestures_overlay"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1.0"
android:gestureStrokeType="multiple" />
<LinearLayout
style="@android:style/ButtonBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/done"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:enabled="false"
android:onClick="addGesture"
android:text="@string/button_done" />
<Button
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="cancelGesture"
android:text="@string/button_discard" />
</LinearLayout>
</LinearLayout>
答案 2 :(得分:3)
官方开发者文档(http://developer.android.com/guide/topics/ui/layout/linear.html)的相关示例:
同等重视儿童
要创建一个线性布局,其中每个孩子在屏幕上使用相同的空间量,请将每个视图的android:layout_height设置为“ 0dp ”(对于垂直布局)或android :每个视图的layout_width为“ 0dp ”(对于水平布局)。然后将每个视图的android:layout_weight设置为“1”。
答案 3 :(得分:0)
当我们必须为线性布局中的其他视图分配相等权重时 然后我们分配layout / width = 0dp(对于水平方向)或layout / height = 0dp(对于垂直方向),然后为该线性布局内的每个视图设置View / weight == 1。
优势:::: -将宽度或高度分配给0dp时,它没有影响,并且由于weight == 1,所有视图都占据相同的空间并覆盖整个屏幕尺寸。