Android-android界面布局的疑惑,关于layout_weight的认知

发布于 2016-12-27 19:31:17 字数 755 浏览 1333 评论 6

我们从android文档中了解到android:layout_weight是针对linelayout中某个子控件所占空间的权重。如果是0表示可以拉伸,大于0的话取决于相同层次控件的weight值。比如下面这个布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:background="#FF0000"
android:layout_height="match_parent" android:layout_width="match_parent"
android:layout_weight="1" />
<LinearLayout android:background="#00FF00"
android:layout_height="match_parent" android:layout_width="match_parent"
android:layout_weight="1" />
</LinearLayout>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

瑾兮 2017-08-27 23:58:33

貌似之前看文档解释其实是说显示时是按照比例来的,比如有两个元素,A元素的layout_weight设为1,B元素的layout_weight设为2,那么在显示时A就显示整个view高度或宽度的2/(1+2),B显示为1/(1+2).是按照整体比例来显示的。

清晨说ぺ晚安 2017-08-26 05:18:46

额,用layout_weight的话,应该习惯于把layout_width或者layout_height改成0dip把,官方文档上说是为了更好的layout性能。

清晨说ぺ晚安 2017-07-13 18:20:07

同意楼上 刚遇到相同的问题 把宽度改成0dip就解决了

晚风撩人 2017-06-16 21:46:32

这估计是计算方式的原因,同意二楼的说法,反过来但实现的效果是一样的。

晚风撩人 2017-06-04 21:05:48

找到原因了,android:layout_height="fill_parent"这个属性值改成
android:layout_height="wrap_content"或者android:layout_height="0dip",
这样比例才不会反过来,虽然可以把代码改成这样:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:background="#FF0000"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:layout_weight="1" />
<LinearLayout android:background="#00FF00"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:layout_weight="2" />
</LinearLayout>

毕竟不符合人的直觉,多数时候还是使用android:layout_height="0dip"的技巧。因此,修改成:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:background="#FF0000"
android:layout_height="0dip" android:layout_width="fill_parent"
android:layout_weight="2" />
<LinearLayout android:background="#00FF00"
android:layout_height="0dip" android:layout_width="fill_parent"
android:layout_weight="1" />
</LinearLayout>

夜无邪 2017-05-01 08:26:55

layout_weight我觉得可以这样理解,当layout_height或者layout_width为wrap_content时表示该组件要尽可能的小,layout_weight越大,组件站的区域越小;当layout_height或者layout_width为match_parent时表示该组件要尽可能的大,layout_weight越大,组件站的区域越大

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文