2010-09-02 38 views
19

我想分三个部分的页面。我想以百分比值的方式来完成,但是Android不支持。相反,我必须使用android:layout_weight。但我很难理解它,并且正确。特别是如何计算实际大小。有没有一种方法可以从android:layout_weight中获得百分比值(0..100%)?Android:试图理解android:layout_weight

我经历了几个案例(见附件截图)来描述问题。彩色字段全部为<LinearLayout>android:layout_height="fill_parent",因为我希望将全屏分为两部分。

案例1

alt text

好吧,简单。每<LinearLayout>获得33%。

案例2

alt text

盛衰?第一个(黄色)<LinearLayout>完全消失?为什么?

案例3

alt text

再次迷茫。黄色<LinearLayout>又回来了。但是,与重量较重的两个第一<LinearLayout>变得更小?到底是怎么回事?

案例4

alt text

我完全不知道这一切背后的数学是什么。

回答

25

有没有办法从android:layout_weight中获取百分比值(0..100%)?

当然。使它们合计为100.

对于“百分比值”,您希望LinearLayout中的单个项目的android:layout_height0px

+8

马克,你做了我的一天。你无法相信我已经花了多少时间来试图弄清奇怪的情况。并且一个简单的'android:layout_height =“0px”'解决了所有问题:-) – znq 2010-09-02 17:13:58

+1

将layout_width设置为“fill_parent”并将layout_weight设置为像“0.2”,“0.75”这样的浮点值也适用,在这种情况下,数字越小元素将占用的部分空间。你能否告诉我们这是否可以接受? – Yar 2011-06-11 13:34:17

8

当您对酒吧使用android:layout_height =“fill_parent”时,您不会留下任何可用空间。 (因为它们正在填充父项。)因为所有3项都设置为填充,所请求的高度实际上是父项高度的3倍,所以权重将应用于负剩余空间。这解释了您所看到的奇怪行为,以及为什么将layout_height设置为0px可以解决这个问题。

+0

链接已经死亡。你的博客文章是否在其他地方可用 – 2014-07-19 11:25:50