android:layout_weight总有你不知道的用法.
16lz
2021-12-04
都知道weight是权重的意思. 在布局中起到非常重要的作用. 但是这玩意不能嵌套使用, 而且只能使用在LinearLayout中.
下面说说它的几种用法(以下例子全为横排 注意android:layout_width值和android:layout_weight值的变化)
第一种, 最普遍的-----均分, weight的值越大, 占的空间越大.注意android:layout_width的值都为0dp
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <FrameLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#000" /> <Button android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"/> <FrameLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#888" />LinearLayout>
第二种, 占满剩余空间, 不管是否处在最后一个
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <FrameLayout 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"/> <FrameLayout android:layout_width="40dp" android:layout_height="match_parent" android:background="#888" />LinearLayout>
第三种, 值越大占的空间越小, 值为同布局下其它控件的weight之和时,即消失.注意android:layout_width的值都为match_parent为0时占满. 有什么用途? 呵呵, 存在即是合理的.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="#000" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1.5"/> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="#000" />LinearLayout>
最后一种(我会用的), 结合android:weightSum使用, 那这儿就用一个问题引入, 如何将控件放在屏幕的中央, 宽度为屏幕的一半? 嗯.....想啊.....想啊...RelativeLayout? 哦, 没法控制? 哦,只能代码了...
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:weightSum="2"> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/>LinearLayout>
更多相关文章
- 设置控件的透明度 ,android:layout_centerInParent="true" 失效
- 相对布局中取值为其他控件id 的属性及说明
- Android自适应不同屏幕几种方法
- Android布局文件中控件的高度与宽度属性设置
- Android(安卓)将 android view 的位置设为右下角的解决方法
- Android主题定制及修改
- Android屏幕完美适配最全攻略(最权威的官方适配指导)
- android:padding 和 android:margin的区别
- Invalidate和postInvalidate的区别