android:layout_weight详解

android:layout_weight详解LinearLayout中支持使用android:layout_weight属性为各个子视图分配权重,权重值更大的视图可以填充父视图中任何剩余的空间。官方介绍:https://developer.android.com/guide/topics/ui/layout/linear.html1、简单举例需求:水平布局中的三个TextView的宽度比为1:2:3代码:将android

大家好,欢迎来到IT知识分享网。

LinearLayout中支持使用android:layout_weight属性为各个子视图分配权重,权重值更大的视图可以填充父视图中任何剩余的空间。
官方介绍:https://developer.android.com/guide/topics/ui/layout/linear.html

1、简单举例

需求:水平布局中的三个TextView的宽度比为1:2:3
需求样式
代码:
将android:layout_width都设为0dp,然后将三个视图的android:layout_weight设为1/2/3即可。

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal">
    <TextView  android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:gravity="center" android:text="1" android:background="#44f21515"/>
    <TextView  android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" android:gravity="center" android:text="2" android:background="#4408e72d"/>
    <TextView  android:layout_width="0dp" android:layout_weight="3" android:layout_height="wrap_content" android:gravity="center" android:text="3" android:background="#44292ce1"/>
</LinearLayout>

2、进阶

从引言的谷歌官方描述中,注意这句话“权重值更大的视图可以填充父视图中任何剩余的空间”中的“剩余”二字,这是使用android:layout_weight所需重点关注的。
也就是:
LinearLayout中的layout_weight属性,首先按照控件声明的尺寸进行分配,然后再将剩下的尺寸按weight分配

2.1 举例1

修改简单例子中的第一个TextView,使其android:layout_width=”wrap_content”,android:text=”11111111111111”,删去android:layout_weight=”1”,效果如下:
举例1
可以看到,第二第三个TextView以2:3的比例填充了总空间中去除了第一个TextView使用后剩余的空间。
总得代码如下:

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal">
    <TextView  android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="11111111111111" android:background="#44f21515"/>
    <TextView  android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" android:gravity="center" android:text="2" android:background="#4408e72d"/>
    <TextView  android:layout_width="0dp" android:layout_weight="3" android:layout_height="wrap_content" android:gravity="center" android:text="3" android:background="#44292ce1"/>
</LinearLayout>

2.2 举例2

那如果不删掉第一个TextView的android:layout_weight=”1”呢,效果如下:
举例2
可以看到,第一个TextView也会额外去占用1/(1+2+3)的剩余空间。

3、其他技巧

如果想达到如下效果:(只有一个TextView,占据LinearLayout一半的空间)
其他技巧
可以利用LinearLayout的android:weightSum属性,指定这个LinearLayout总的权重值
代码:

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="2">
    <TextView  android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="1" android:background="#44f21515"/>
</LinearLayout>

以上就是我对android:layout_weight的一点理解,欢迎交流

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23216.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信