0

在此布局定义中:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="7"
            android:id="topLayout"
            android:background="@android:color/holo_green_light">

    </LinearLayout>

    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="horizontal"
            android:layout_weight="2"
            android:id="bottomLayout"
            android:background="@android:color/holo_orange_light">

    </LinearLayout>
</LinearLayout>

我不明白为什么命名的“bottomLayout”高于topLayout。您可以在 Android Studio 中看到结果的注释屏幕截图。

4

4 回答 4

1

首先修复您的 xml 并将 layout_height 更改为 0dp。这是因为您正在使用权重来管理高度,同时您正在指示它填充父级。其次,如果您通过将权重设为 1 进行试验,您会注意到两种布局现在均分。我假设权重是计算添加视图后剩余的可用空间,即计算权重根据可用空间。

通过单击屏幕外布局溢出的轮廓来检查预览,您可能会发现布局的某些部分在屏幕外。为了更清楚,例如根据百分比使用您的权重,而不是使用 2 和 7 尝试使用 0.2 和 0.8,这将平衡权重。或者您可以使用属性“weight_sum”来声明总可用重量,然后将其平均分配,例如使用 weight_sum 100 您可以采用基于百分比的方法。

请参阅此链接以进一步了解。

于 2013-08-09T11:03:16.147 回答
1

LinearLayout子项按声明顺序排列。

layout_weight机制仅将任何剩余空间按其权重比例分配给元素,它不影响排序。

这与其他一些“重量”参数影响项目在容器中的位置的环境不同。

于 2013-08-09T11:05:15.223 回答
0

if you want to use layout_weight in linearlayout then you have to add weightSum in parent LinearLayout

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="10"
        android:orientation="vertical"
    >

        <--70% of free space in parent LinearLayout-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="7"
        >
        </LinearLayout>
        <--30% of free space in parent LinearLayout-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="3"
        >
        </LinearLayout>

    </LinearLayout>

in xml comments i wrote 70% of free space in parent LinearLayout if you add some layout with exact height then both your linearlayouts will occupy 70% and 30% of left height in that particular linearlayout for example if height of your parent linearlayout is 100dp

your child layouts will be drawn first one 70dp and the second one will be 30dp tall but if you add some imageview with height 50dp then your first child linearlayout will be about 35dp tall and 15dp for second one

于 2013-08-09T11:00:42.637 回答
0

如果你让你的代码喜欢这样,那么你可以找到解决方案

    <LinearLayout
        android:![enter image description here][1]orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="7"
        android:id="topLayout"
        android:background="@android:color/holo_green_light">

</LinearLayout>

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="3"
        android:id="bottomLayout">

    <Button
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="b"
            android:id="@+id/button4"
            android:layout_gravity="center"
            android:background="@android:color/holo_orange_light"/>

</LinearLayout>

于 2013-08-09T10:51:13.113 回答