我正在尝试使用“layout_weight”来构建适合所有设备大小的Android布局,并且我在理解其行为时遇到了一些困难。我注意到更改“layout_width” / “layout_height”会影响“layout_weight”的行为,但是我不明白其原理。例如,我想要一个垂直的“LinearLayout”,将其分成三个内部“LinearLayout”,使得顶部和底部的填充屏幕的比例为25%,中间的比例为50%,而不受内部布局内容的影响(如果内部“LinearLayout”的内容太大,则不应移动其他布局)。为了实现这一点,我应该将内部“LinearLayout”的“layout_height”属性设置为“fill_parent”还是“wrap_content”?谢谢!编辑:看起来“layout_weight”与布局所占大小成反比例关系。以下是三个示例:
1/1/1权重(按照我的预期工作)
结果:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#FF0000"/> //RED
<LinearLayout
android:id="@+id/layout2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#00FF00"/> //GREEN
<LinearLayout
android:id="@+id/layout3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#0000FF"/> //BLUE
</LinearLayout>
结果:
权重 1/2/1 (为什么是这个权重?)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#FF0000"/> //RED
<LinearLayout
android:id="@+id/layout2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2"
android:background="#00FF00"/> //GREEN
<LinearLayout
android:id="@+id/layout3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#0000FF"/> //BLUE
</LinearLayout>
结果:
**权重3/2/3(我原打算使用1/2/1):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="3"
android:background="#FF0000"/> //RED
<LinearLayout
android:id="@+id/layout2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2"
android:background="#00FF00"/> //GREEN
<LinearLayout
android:id="@+id/layout3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="3"
android:background="#0000FF"/> //BLUE
</LinearLayout>
结果:
![输入图像描述](https://istack.dev59.com/rL6p0.webp)
layout_weight
在这种情况下的作用:如果我放置1/1/1,那么三个部分将是相等的。但如果我放置1/2/1,我看不到第二个部分,屏幕只是被第一个布局和第三个布局平均分成了50%。它是如何工作的? - nbarraille