Android-0.AndroidStudio布局中layout_weight用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android-0.AndroidStudio布局中layout_weight⽤法
指⽰LinearLayout中多少额外空间分配给与这些LayoutParams关联的视图。
如果视图不应被拉伸,请指定0。
否则,额外空间将在权重⼤于0的所有视图中按⽐例分配。
上⾯有⼏点:
1.额外空间,指的是剩余空闲空间, 额外空间将在权重⼤于0的所有视图中按⽐例分配。
如下,总权重为1+1=2
第⼀个控件是⽐第⼆个控件占的空间⼩的,即w(12345)+1/2空闲空间< w(123456)+1/2控件
<LinearLayout
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_height"
android:layout_weight="1"
android:text="12345"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_height"
android:layout_weight="1"
android:text="123456"/>
</LinearLayout>
如果我们让控件的宽度定义为layout_width="0dp" ,这样⽐如2个控件的 layout_weight="1" 就可以各⾃50%平分整个空间了,因为:0 + 1/2空闲空间 = 0 + 1/2空闲空间。
2.默认layout_weight为0,所以如果这么写:
<LinearLayout
android:orientation="horizontal">
<TextView
android:layout_width="40dp"
android:layout_height="match_parent"
android:background="#000" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<TextView
android:layout_width="40dp"
android:layout_height="match_parent"
android:background="#888" />
</LinearLayout>
则总权重为1,即Button占了所有剩余空闲空间,⽆论它在哪个位置
3.在排列⽅向上设置了match_parent, 如下,权重为2,1,2
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1"
android:layout_weight="2"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="2"
android:layout_weight="1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="3"
android:layout_weight="2"/>
运⾏结果如下:
分析:因为设置的都是match_parent,所以如果没有设置权重,三个Button只会显⽰第⼀个,其他会被覆盖,但是设置了权重后,我们就按三个Button给定的width=match_parent计算剩余空间
剩余空间=1个match_parent空间-3个match_parent空间= -2个match_parent空间(负2)
所以
Button1所占空间 = 1个match_parent空间+(-2个match_parent空间)*2/5 = 1/5个match_parent空间
Button2所占空间 = 1个match_parent空间+(-2个match_parent空间)*1/5 = 3/5个match_parent空间
Button3所占空间 = 1个match_parent空间+(-2个match_parent空间)*2/5 = 1/5个match_parent空间
所以在统⼀设置match_parent时,会有这么⼀个特性,权重越⼤,空间越⼩。
⽽且在某个控件权重刚好为另外的所有控件权重之和时,这个控件会消失。
如权重变为1,2,3
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1"
android:layout_weight="2"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="2"
android:layout_weight="1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="3"
android:layout_weight="2"/>
运⾏结果如下:
同样的算法:
Button1所占空间 = 1个match_parent空间+(-2个match_parent空间)*1/6 = 2/3个match_parent空间
Button2所占空间 = 1个match_parent空间+(-2个match_parent空间)*2/6 = 1/3个match_parent空间
Button3所占空间 = 1个match_parent空间+(-2个match_parent空间)*3/6 = 0个match_parent空间
剩余布局⼤⼩ = ⽗布局⼤⼩ - ⼦布局⼤⼩之和
————————————————。