记录一下线性布局经常用到的一个属性weight。
经常使用,今天突然又深入了一点,在此记录。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" >
<!-- 三个TextView的控件并没有对齐,但是对于其中文本第一行是对齐的。这是因为TextView在LinearLayout中会参考父类的基线 -->
<!-- LinearLayout中增加属性 android:baselineAligned="false" 可避免这样的问题。 -->
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:baselineAligned="false" android:orientation="horizontal" >
<TextView android:id="@+id/id" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="1" android:background="#44ff0000" android:gravity="center" android:text="11111111" />
<TextView android:id="@+id/id2" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="2" android:background="#4400ff00" android:gravity="center" android:text="2" />
<TextView android:id="@+id/id3" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="3" android:background="#440000ff" android:gravity="center" android:text="3" />
</LinearLayout>
<TextView android:id="@+id/id0" android:layout_width="wrap_content" android:layout_height="48dp" android:background="#44ff0000" android:gravity="center" android:text="11111111" />
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:baselineAligned="false" android:orientation="horizontal" >
<!-- width设置成wrap_content对weight设置的比值有影响 -->
<!-- 说明LinearLayout中的layout_weight属性,首先按照控件声明的尺寸进行分配,然后再将剩下的尺寸按weight分配 -->
<!-- 实际占用空间 = 控件宽度 + 父控件剩余宽度 * 比例 -->
<TextView android:id="@+id/id4" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_weight="1" android:background="#44ff0000" android:gravity="center" android:text="11111111" />
<TextView android:id="@+id/id5" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="2" android:background="#4400ff00" android:gravity="center" android:text="22222" />
<TextView android:id="@+id/id6" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="3" android:background="#440000ff" android:gravity="center" android:text="3333" />
</LinearLayout>
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:baselineAligned="false" android:orientation="horizontal" >
<!-- 假设最外层是480dp 3个控件都是match_parent 剩余尺寸为 480 - 480*3 = -480*2 -->
<!-- id7: 480+(-480*2)*(1/6)=480*(2/3) -->
<!-- id8: 480+(-480*2)*(2/6)=480*(1/3)+ -->
<!-- id9: 480+(-480*2)*(3/6)=0 -->
<!-- 结论:实际占用空间 = 控件宽度 + 父控件剩余宽度 * 比例 -->
<TextView android:id="@+id/id7" android:layout_width="match_parent" android:layout_height="48dp" android:layout_weight="1" android:background="#44ff0000" android:gravity="center" android:text="11111111" />
<TextView android:id="@+id/id8" android:layout_width="match_parent" android:layout_height="48dp" android:layout_weight="2" android:background="#4400ff00" android:gravity="center" android:text="22222" />
<TextView android:id="@+id/id9" android:layout_width="match_parent" android:layout_height="48dp" android:layout_weight="3" android:background="#440000ff" android:gravity="center" android:text="3333" />
</LinearLayout>
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="2" android:orientation="horizontal" >
<!-- LinearLayout中设置android:weightSum="2" 实现LinearLayout中只有一个TextView控件使其占用父控件的一半 -->
<!-- 有layout_开头的是交给父控件去处理 -->
<TextView android:id="@+id/id10" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="1" android:background="#44ff0000" android:gravity="center" android:text="11111111" />
</LinearLayout>
</LinearLayout>
今天的文章了解weight属性分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/64174.html