相对布局和线性布局是用的最多的了,其中有一些属性是共有的,有的是各自独有的,有点绕,特此记录下
通用(但是在实际的场景中效果可能有区别)
id height width 这些肯定是都有的
layout_marginLeft 子控件相对于父控件的左边距,还有上下右 ,具体的数值 ,比如一个button相对于父控件的距离
paddingLeft 控件内文字距离控件左边距, 具体的数值
gravity 控件内的文本相对于这个控件的位置
LinearLayout特有的
orientation:horizontal和vertical 相对布局无需设置布局方向,控件之间都是通过相对位置来排布的
layout_gravity 控件的左右上下居中位置 这个属性必须显示定义父控件的orientation之后才生效,所以只有线性布局中起作用
layout_weight 权重 后面详述
RelativeLayout 特有的(每一种只列出一个方向)
layout_alignParentRight true/false 如果该值为true,则将该控件的右边与父控件的右边对齐,默认置于父窗口最右上,会覆盖最右上的控件
layout_alignRight @id/.... 将该控件的右边缘与给定ID控件的右边缘对齐,并置于父窗口最上边,会覆盖最上边的控件
layout_centerHorizontal true/false
layout_centerVertical
layout_centerInParent
layout_above @id/ 将该控件的底部至于给定ID的控件之上,但不会左对齐,默认置于父窗口最左边,会覆盖最左边的控件 类似的还有below
layout_toLeftOf @id/.... 将该控件的右边缘和给定ID的控件的左边缘对齐,默认置于父窗口最上面,会覆盖最上面的控件
关于权重
权重最基本的用法就是 对线性布局指定方向(水平或垂直)上剩余空间分配的一个规则,先把规定的大小占完,再来按比例分配剩余空间
特殊情况:
首先计算数值,所有控件加起来后可能超过屏幕大小了,这个时候剩余值就应该是负的,此时按权重分配,权重大的分得值比较大,但是负的,这个时候加上原来的值,反而变小
权重有一个很有用的特点,在一些特殊应用场景,比如有两个控件,一个设置了权重,一个不设置权重,那么这个设置权重的控件会后加载渲染。
比如,vertical
我们想给下面的控件设置一个高度,上面的充满剩余空间
那么下面的控件不设置权重,先从底部占一定高度,上面的控件给一个比较大的权重,就能填满剩余的空间。否则,是从上往下加载。
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:hint="@string/hello_world"/>
<EditText
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="right"
android:hint="@string/fruits"/>
这样子第一个EditText后加载,占满剩余屏幕