編輯:關於Android編程
關於Android開發中的LinearLayout子控件權重android:layout_weigh參數的作用,網上關於其用法有兩種截然相反說法:
說法一:值越大,重要性越高,所占用的空間越大;
說法二:值越大,重要性越低,所占用的空間越小。
到底哪個正確?哪個錯誤?抑或還有其他解釋?請點擊查看關於weight 權重參數作用的詳分析:
其實這兩種情況都不太准確;
准確的解釋是,weight 權限 是用於分配父控件某一方向上尺寸-所有子控件在該方向上設定尺寸和 所得值的一個參數,把這個相減得到的結果(可能為正也可能為負)按照某個子控件weight值占所有weight值的比例分配給子控件,子控件在該方向上的最終實際尺寸為(控件設定尺寸+weight權限分配尺寸(可能為負))。
例如豎直方向的LinearLayout控件F中,兩個控件分別為:
A控件 hight = a, weight =w_a;
B控件 hight = b,weight=w_b;
父控件F 實際 hight = c;
則控件A和控件B的最終實際尺寸為:
A控件實際hight_a =a+(c-(a+b))*w_a/(w_a+w_b) ;
B控件實際hight_b =b+(c-(a+b))*w_b/(w_a+w_b) ;
若:w_a= 1; w_b= 2;
則:
hight_a=a+(c-(a+b))/3;
hight_b=a+(c-(a+b))*2/3;
所以 當(c-(a+b))值大於0時,也就是所有子控件高度(或寬度)之和小於父控件高度(或寬度)時,weight權限值越大會使得控件尺寸在原設定尺寸基礎上增加的值越大;
所以 當(c-(a+b))值小於0時,也就是所有子控件高度(或寬度)之和大於父控件高度(或寬度)時,weight權限值越大反而會使得控件尺寸在原尺寸基礎上減去的值更大;
但控件的實際尺寸是按上面公式計算結果得出,控件之間並不是在所有情況下都是weight值越大控件所占空間越大或weight值越小控件所占空間越小。
那麼為什麼一般大家都這麼認為呢?其實是有兩種特殊情況:
一是:所有控件該方向尺寸都設定為0dp,這時 公式中的a=0;b=0;最終A、B控件的尺寸分別為:
hight_a=c*w_a/(w_a+w_b);
hight_b=c*w_b/(w_a+w_b);
這就是所謂的說法一:值越大,重要性越高,所占用的空間越大。
二是:所有控件該方向尺寸都設定為fillparent,這時 公式中的a=c;b=c;最終A、B控件的尺寸分別為:
hight_a=c*(1-*w_a/(w_a+w_b));
hight_b=c*(1-*w_b/(w_a+w_b));
這就是所謂的說法二:值越大,重要性越高,所占用的空間越小。
至此,關於LinearLayout布局中的控件 的weight值的的作用,應該有了一個比較正確的認識了:
尺寸是通過公式計算出來的,只有在特殊情況下才會是普遍認為的:值越 空間越大或值越大占用空間越小。
還有一個我認為是經常不被大家所注意的但也特別實用的用途就是:可以利用weight值在保證空間最小尺寸的前提下去分配父控件多余的尺寸(相對於所有子控件在該方向上的尺寸之和),實現一些特定比例的效果,具體的在此不再展開,感興趣的可以根據公式計算,自己親自去嘗試一下,應該會有你意想不到的收獲。
在實現ListView單選時,我們可以在Adapter中自己創建一個selectPosition參數,這樣是能實現需求。但加入要是再加一個多選接著又在Adapter中創建
簡介這是一個基於AlertDialog和Dialog這兩個類封裝的多種彈出框樣式,其中提供各種簡單樣式的彈出框使用說明。同時也可自定義彈出框。項目地址:http://ww
安卓低版本的效果很難看,高版本的dialog雖然好看,但還是和公司UI給的效果圖有些差距.於是乎就想辦法能不能dialog的布局也能自定義.好了先看效果圖:是不是感覺效果
QQ是大家離不開的聊天工具,方便既實用,自從qq更新至6.0之後,側滑由原來的劃出後主面板縮小變成了左右平滑,在外觀上有了很大的提升,於是我就是嘗試理解下裡面的各種邏輯,