<LinearLayout android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_height" android:layout_weight="1" android:text="888"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_height" android:layout_weight="1" android:text="999999"/> </LinearLayout>
以上面的佈局代碼爲例,TextView-888 和 TextView-999999 是橫向排列的2個控件,它們的layout_weight="1",說明這2個控件平分了所在LinearLayout的剩餘的空閒空間, 咱們很容易的就誤認爲這2個控件平分了水平方向的空間,即:各自佔據了 50% 的寬度。android
其實這是錯誤的,而是:TextView-999999控件所佔據的寬度 > TextView-888所佔據的寬度。由於999999字符佔據的寬度大於888佔據的寬度,即:w(999999) + 1/2空閒空間 > w(888) + 1/2空閒空間。佈局
這就是它奇葩的地方,很容易就讓咱們一直誤認爲是整個控件分割空間。到這裏,你們必定會認爲,這樣的話,layout_weight 這個屬性就沒有什麼意義了,原覺得它能夠分配空間呢,原來只是分割剩餘空閒空間。code
其實,呵呵,layout_weight 是能夠用來進行整個空間的分割的,若是咱們讓控件的寬度定義爲0,這樣好比2個控件的 layout_weight="1" 就能夠各自50%平分整個空間了,由於:0 + 1/2空閒空間 = 0 + 1/2空閒空間xml
這是一個小技巧,也是很是實用的一個實用layout_weight分割方案:定義控件的 layout_width="0dp" 或layout_height="0dp" 配上 layout_weight 就能夠實現對整個空間的比例分割了。io