Android布局重量不起作用

时间:2017-03-06 08:48:07

标签: android android-layout android-layout-weight

我有这个布局:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="6sp"
    android:layout_marginLeft="16sp"
    android:layout_marginRight="6sp"
    android:layout_marginTop="6sp" >

    <TextView android:id="@+android:id/title"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceListItem"
        android:inputType="none" />

    <TextView android:id="@+android:id/summary"
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_below="@android:id/title" 
        android:maxLines="2"
        android:layout_width="wrap_content" />

</RelativeLayout>

<!-- Preference should place its actual preference widget here. -->
<!-- android:id="@android:id/widget_frame" -->

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="6sp"
    android:layout_marginLeft="6sp"
    android:layout_marginRight="6sp"
    android:layout_marginTop="10sp"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:weightSum="1" >

    <SeekBar
        android:id="@+id/change_seekbar"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.8"
        android:paddingLeft="20dip"
        android:paddingRight="20dip" >

    </SeekBar>

    <TextView
        android:id="@+id/Text_Box_seek"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:textSize="16dip" >
    </TextView>
</LinearLayout>

我希望搜索栏在内部线性布局中占据宽度的80%,但搜索栏保持非常小...为什么不会占用其余的空间?

7 个答案:

答案 0 :(得分:4)

LinearLayout的布局宽度更改为match_parent或为其设置特定值。

<强>解释 如果使用LinearLayout width = wrap_content,则LinearLayout的宽度将取决于子项 并且您还设置了孩子的体重,因此孩子的宽度将取决于父母 =&GT; (父母的宽度取决于孩子,孩子的宽度取决于父母)然后我认为视图将不知道该怎么做

答案 1 :(得分:1)

尝试在TextView - Text_Box_seek

中加入剩余的20%重量
 <TextView
        android:id="@+id/Text_Box_seek"
        android:layout_width="0dp"
        android:layout_weight="0.2"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:textSize="16dip" >
    </TextView>

为了完美分配重量,您必须根据需要为所有项目分配重量。将其他人设置为wrap_content会让他们占用空间而忽略你给予的重量。

修改

同样,Phan Van Linh回答宽度应该匹配_ parent或任何指定的宽度,以便布局不会因其宽度而对其内容进行加工(这将影响重量分布。

答案 2 :(得分:0)

当你使用方向时:水平..那个时候layout_width应该是0dp android:layout_width =“0dp”

答案 3 :(得分:0)

试试这个,

    <!-- Preference should place its actual preference widget here. --><!-- android:id="@android:id/widget_frame" -->
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="6sp"
            android:layout_marginLeft="16sp"
            android:layout_marginRight="6sp"
            android:layout_marginTop="6sp">

            <TextView
                android:id="@+android:id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="none"
                android:textAppearance="?android:attr/textAppearanceListItem" />

            <TextView
                android:id="@+id/summary"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@android:id/title"
                android:maxLines="2"
                android:textAppearance="?android:attr/textAppearanceSmall" />

        </RelativeLayout>

        <!-- Preference should place its actual preference widget here. -->
        <!-- android:id="@android:id/widget_frame" -->

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="6sp"
            android:layout_marginLeft="6sp"
            android:layout_marginRight="6sp"
            android:layout_marginTop="10sp"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <SeekBar
                android:id="@+id/change_seekbar"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.3"
                android:paddingLeft="20dip"
                android:paddingRight="20dip">

            </SeekBar>

            <TextView
                android:id="@+id/Text_Box_seek"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dip"
                android:layout_weight="0.7"
                android:textSize="16dip"></TextView>
        </LinearLayout>

        </RelativeLayout>

答案 4 :(得分:0)

将LinearLayout的宽度更改为match_parent。

答案 5 :(得分:0)

尝试将线性布局属性设置为android:layout_width="match_parent",然后布局权重就可以了。 希望这个答案能帮到你。

答案 6 :(得分:0)

Ani和Shreya Patel都是对的,只需将linear_midth更改为LinearLayout中的match_parent,重量就会有效。