在之前的学习中一直对weight的宽度存在误解导致有些时候控件的宽度与自己设想的事与愿违,今天刚好看到weight宽度的算法,在这里记录一下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="match_parent"> <Button android:id="@+id/Button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <Button android:id="@+id/Button2" android:layout_weight="2" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>在这个例子中或许有人一开始会和我一样存在这样的误解:Button1的宽度占1/3 Button2的宽度占2/3
但是在实际中却恰好相反
weight计算出来的宽度 = 控件的宽度+剩余空间所占百分比的宽度
假设屏幕的宽度是L
Button1它的宽度是“match_parent” 即L
同理Button2它的宽度也是L
Button1的实际宽度 = L+(L-2L)*1/3 = 2/3L
Button2的实际宽度 = L+(L-2L)*2/3 = 1/3L
剩余空间 = 屏幕宽度 - Button1 宽度 - Button2 宽度 = L - 2L = -L