我正在尝试使用layout_weight
构建一个Android布局,以适应所有尺寸的设备,我在理解其内容方面遇到了一些麻烦。
我注意到,更改layout_width
/ layout_height
会影响layout_weight
内容,但我不明白如何。
比方说,我想要一个垂直LinearLayout
分为三个内部LinearLayout
,使得顶部的一个和底部的一个填充屏幕的25%,并且在中间50%,这不应该取决于内部布局的内容。 (如果内部LinearLayout
的内容太大,则不应移动其他布局)
为了做到这一点,我应该将内部layout_height
的{{1}}属性设置为LinearLayout
还是设置为fill_parent
?
谢谢!
编辑:看起来layout_weight与布局占用的大小成反比。
3个例子:
重量1/1/1(按预期工作)
wrap_content
结果:
重量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="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>
结果:
**重量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="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>
结果:
答案 0 :(得分:3)
您可以尝试设置layout_height = 0dp
答案 1 :(得分:3)
要使layout_weight
按预期工作(并记录在案),您必须不将layout_height
设置为fill_parent
和match_parent
。< / p>
http://developer.android.com/guide/topics/ui/layout/linear.html#Weight右侧的示例显示了layout_height
设置为0dp
的示例。但是,根本不进行设置或将其设置为wrap_content
也会使layout_weight
按预期工作。
答案 2 :(得分:1)
您应该将所有三个内部布局的layout_height设置为“fill_parent”,然后更改它们的权重以使它们看起来像您想要的那样。