在android布局中,layout_height =“0dip”的效果/含义是什么?

时间:2011-05-13 02:54:18

标签: android android-layout

我见过几个使用的例子 android:layout_height =“0px”或“0dip”但我不明白这个的影响。似乎这将使布局高0像素。是否减轻了价值,但还有一些其他因素,如“权重”或任何父视图的高度?

4 个答案:

答案 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_heightlayout_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,所有视图都占据相同的空间并覆盖整个屏幕尺寸。