基于网上的资料及自己使用的情况,整理了下Android 布局相关的属性,比较常用.
1. 基本属性
android:id 为控件指定相应的ID
android:text 指定控件的文本,置尽量使用strings.xml
android:grivity 指定控件的基本位置 ,比如举重,居右,
android:padding 指定控件的内边距,控件当中的内容
android:singleLine 如果设置为真的话,则将控件的内容在同一行当中显示
------------------- RelativeLayout 相对布局相关 start ---------------------------------------
android:layout_above 将该空间的底部至于给定ID的空间之上
android:layout_below:将该控件的顶部至于给定ID的控件之下
android:layout_toLeftOf:将该控件的右边缘和给定ID的控件的左 边缘对其
android:layout_toRightOf 将该控件的左边缘和给定的ID的控件的右边缘对齐
android:layout_alignBaseLine 该控件的baseline和给定ID的控件的Baseline对齐
android:layout_alignBottom 将该控件的底部边缘与给定ID控件的底部边缘
android:layout_alignLeft将该控件左边缘与给定ID控件的左边缘对齐
android:layout_alignRight将该控件的右边缘与给定ID控件的右边缘对齐
android:layout_alignTop将给定控件的顶部边缘与给定ID控件的顶部对齐
android:alignParentBottom如果该值为true 则将该控件的底部和父控件的底部对齐
android:layout_alignParentLeft如果该值为true则将该控件的左边与父控件的左边对齐
android:layout_alignParentRight 如果该值为true则将该控件的右边与父控件的右边对齐
android:layout_alignParentTop 将控件的顶部与父控件的顶部对齐
------------------- RelativeLayout 相对布局相关 End ---------------------------------------
android:layout_centerHorizontal如果值为真,该控件将被至于水平方向的中央
android:layout_centerInParent 将被至于父控件水平方向和垂直都居中
android:layout_centerVertical将被至于垂直方向的中央
2. 各类属性值
第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离父控件底边缘的距离
android:layout_marginLeft 离父控件左边缘的距离
android:layout_marginRight 离父控件右边缘的距离
android:layout_marginTop 离父控件上边缘的距离
3. android:gravity 和 android:layout_gravity 的区别
android:gravity
android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity="right"则button上面的文字靠右
android:layout_gravity
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,android:layout_gravity="right"则button靠右
android:layout_alignParentRight
使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。
4 .padding和margin的区别:
所以padding是定义控件自己的内容和控件边缘之间的距离,padding有填充填料的意思,而margin是在说控件的四个边缘之外的距离,指的是和别的控件之间的距离,margin有边缘,页面留白的意思
5. 动画相关属性
AlphaAnimation 控制渐变透明的动画效果
ScaleAnimatin 控制尺寸伸缩的动画效果
TranslateAnimation 控制画面平移的动画效果
RotateAnimation 控制画面角度变化(旋转)的动画效果
LayoutAnimation 渲染ViewGroup中每个View显示时候的动画效果
6. LayoutParams (布局参数) 属性
LinearLayout 、 RelativeLayout 、FrameLayout 等布局都有LayoutParams内部类,用于在代码中动态设置布局属性,以动态调整布局。
常用于不同状态下,需要动态调整控件位置.
如: 在一个RelativeLayout 布局中,有两个LinearLayout1 和LinearLayout2 (LinearLayout2 实际上是布局中的LinearLayout中的控件,为了方便这样写而已)
LinearLayout2 置 layout_toStartOf = LinearLayout1,并且layout_alignWithParentIfMissing = true.
假设当LinearLayout1为GONE的时候,则LinearLayout2显示在屏幕最右边,不美观。
这是可以设置当LinearLayout1为GONE的时候,在代码里通过LayoutParams设置LinearLayout2的右边距:
int rightMargin = 0;
rightMargin = (int) getResources().getDimension(R.dimen.my_right_margin);
LinearLayout.LayoutParams lp = (LinerLayout.LayoutParams) <span style="color:#000099;"><span style="BACKGROUND-COLOR: #ffffff">LinearLayout2.getLayoutParams</span>();
</span><span style="color:#000099;">lp.rightMargin</span> = rightMargin;
<span style="BACKGROUND-COLOR: #ffff33">LinearLayout2.setLayoutParams(lp);
</span>
7.小结
LinearLayout: 线性布局,使用时要注意方向:vertical 和 horizontal。 避免方向弄错导致控件显示不出来(不会自动换行).
RelativeLayout: 相对布局,使用时注意和父控件及其它控件的相对位置关系。
FrameLayout: 帧布局,注意后面显示的控件可能会覆盖前一个控件。
经常会组合使用,使得布局文件简洁易懂。
因为xml 布局相对不灵活,如果在运行中要动态改变控件位置或者大小,可以使用LayoutParams 进行设置。