奇葩屬性 layout weight 的解釋及使用

2021-07-23 19:45:19 字數 2164 閱讀 1603

在android的控制項布局中,有乙個奇葩的 layout_weight 屬性,定義如下:

layout_weight : 用於指定剩餘

空閒空間的分割比例。用法:

orientation=

"horizontal">

layout_width=

"wrap_content"

android:layout_height=

"wrap_height"

android:layout_weight=

"1" android:text=

"888"/>

layout_width=

"wrap_content"

android:layout_height=

"wrap_height"

android:layout_weight=

"1" android:text=

"999999"/>

為什麼說是奇葩呢?

以上面的布局**為例,textview-888 和 textview-999999 是橫向排列的2個控制項,它們的layout_weight="1",說明這2個控制項平分了所在linearlayout的剩餘的空閒空間, 我們很容易的就誤認為這2個控制項平分了水平方向的空間,即:各自佔據了 50% 的寬度。

其實這是錯誤的,而是:textview-999999控制項所佔據的寬度 

>

textview-888所佔據的寬度。因為999999字元佔據的寬度大於888佔據的寬度,即:w(999999) + 1/2空閒空間 > w(888) + 1/2空閒空間。

這就是它奇葩的地方,很容易就讓我們一直誤認為是整個控制項分割空間。到這裡,大家一定會認為,這樣的話,layout_weight 這個屬性就沒有什麼意義了,原以為它可以分配空間呢,原來只是分割剩餘空閒空間。

其實,呵呵,layout_weight 是可以用來進行整個空間的分割的,如果我們讓控制項的寬度定義為0,這樣比如2個控制項的 layout_weight="1" 就可以各自50%平分整個空間了,因為:0 + 1/2空閒空間 = 0 + 1/2空閒空間

這是乙個小技巧,也是非常實用的乙個實用layout_weight分割方案:定義控制項的 layout_width="0dp" 或 

layout_height="0dp"

配上 layout_weight 就可以實現對整個空間的比例分割了。

下面定義了2個控制項的 layout_width="0dp", layout_weight="1",實現了水平方向50%平均分割:

orientation=

"horizontal">

layout_width=

"0dp"

android:layout_height=

"wrap_height"

android:layout_weight=

"1" android:text=

"888"/>

layout_width=

"0dp"

android:layout_height=

"wrap_height"

android:layout_weight=

"1" android:text=

"999999"/>

下面定義了2個控制項的 layout_height="0dp", layout_weight="1",實現了豎直方向50%平均分割:

orientation=

"vertical">

layout_width=

"wrap_content"

android:layout_height=

"0dp"

android:layout_weight=

"1" android:text=

"888"/>

layout_width=

"wrap_content"

android:layout_height=

"0dp"

android:layout_weight=

"1" android:text=

"999999"/>

layout_weight 原來是可以這麼用滴  

奇葩屬性 layout weight 的解釋及使用

摘要 layout weight 的含義及使用 在android的控制項布局中,有乙個奇葩的 layout weight 屬性,定義如下 layout weight 用於指定剩餘空閒空間的分割比例。用法 複製 複製 為什麼說是奇葩呢?以上面的布局 為例,textview 888 和 textview...

奇葩的狐火瀏覽器border屬性

今天接到乙個bug任務,客戶反映火狐瀏覽器訪問時某個商品樓層不顯示商品。我立即開啟我的火狐瀏覽器發現沒有復現這個bug,後來經過一番折騰,才發現火狐瀏覽器縮放到90 時,商品樓層果然就消失了,而且每台電腦都會復現,看來這就是css 問題了而不是介面資料問題,接下來我們就來分析這段歷史悠久的css 這...

奇葩的想法

1.整除的個數 大致意思是給兩個整數 x,y 求1 x中所有可以整除y的數的個數 想的時候很簡單覺得直接列舉出結果就好了 結果測試的時候超時 後來分來一半來做 還是超時 想了半天不知道怎麼想 後來才發現直接用x對y求整除就是結果 想了下的確是這樣 x中能夠容納多少個y 不就說明 1 x中有多少種可以...