布局相关
2017-11-21 本文已影响8人
吾是小马哥
- padding和margin都是边距的含义,但二者边距的定义不同
padding是控件的内容相对控件的边缘的边距;
layout_margin是控件边缘相对父控件的边距。
- layout_gravity / gravity
作用:用来确定View在Layout中的停靠位置
android gravity和layout_gravity区别:
gravity属性:是对该view 内容的位置的设置。
比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.
layout_gravity属性:是用来设置该view相对与父view 的位置。
比如一个button 在Linearlayout里,
你可以通过设置该属性把该button放在父布局Linearlayout靠左靠右等位置。
各种Layout的特有属性
- FrameLayout
作为最简单的Layout,只具备基础属性:
layout_width & layout_height
layout_margin+方位 & padding+方位
layout_gravity & gravity
- AbsoluteLayout
除了基础属性外,AbsoluteLayout还具备:
layout_x:指定控件的x坐标
layout_y:指定控件的x坐标
上述属性的取值均为固定值。
- TableLayout
除了基础属性外,由于TableLayout的行TableRow是一个横向的(horizontal)的LinearLayout,
所以具备LinearLayout的属性
- LinearLayout
除了基础属性,还会有:
orientation
1.作用:设置布局内控件的排列方式
2.取值:vertical(垂直排列-默认值)、horizontal(水平排列)
android:orientation="vertical";
//android:orientation="horizontal";
layout_weight:
1.定义:是线性布局(Linelayout)的一个独特比例分配属性
2.作用:使用此属性设置权重,然后按照比例对界面进行空间的分配,
计算是:控件宽度=控件设置宽度+剩余空间所占百分比宽幅.
参考:http://mobile.51cto.com/abased-375428.htm
- RelativeLayout
RelativeLayout的属性算是最多的了,除了基本属性外,还有:
a. 相对于父空间:
XML属性 说明
layout_alignParentBottom 当前控件底端与父控件的底端对齐
layout_alignParentLeft 当前控件左端与父控件的左端对齐
layout_alignParentRight 当前控件右端与父控件的右端对齐
layout_alignParentTop 当前控件上端与父控件的上端对齐
layout_centerHorizontal 当前控件位于父控件的横向中间位置(水平方向上的中间)
layout_centerVertical 当前控件位于父控件的纵向中间位置(平面上的正中间)
layout_centerInParent 当前控件位于父控件的纵横向中间位置(垂直方向上的中间)
上述所有属性的取值皆为boolean属性:true、false。
b. 相对于给定控件:
XML属性 说明
layout_above 使当前控件位于给出id控件的上方
layout_below 使当前控件位于给出id控件的下方
layout_toLeftOf 使当前控件位于给出id控件的左侧
layout_toRightOf 使当前控件位于给出id控件的右侧
layout_alignBottom 使当前控件与给出id控件的底部部重合
layout_alignLeft 使当前控件与给出id控件的左边重合
layout_alignRight 使当前控件与给出id控件的右边重合
layout_alignTop 使当前控件与给出id控件的顶部重合
layout_alignBaseline 使当前控件的BaseLine与给出id控件t的BaseLine重合
上述所有属性的取值皆为给定控件的id名,如下例子:
//文本控件@+id/tab_textview在控件@+id/tab_imageview的下方
<TextView
android:id="@+id/tab_textview"
android:layout_below="@+id/tab_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>