一、布局
在Android中,有五种常见的布局方式。
FrameLayout(框架布局)
LinearLayout(线性布局)
AbsoluteLayout(绝对布局)
RelativeLayout(相对布局)
TableLayout(表格布局)
1. Frame框架布局
- 特点:放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素
- 应用场景 :适合浏览单张图片。
2.LinearLayout线性布局
-特点:主要提供控件水平或垂直排列的模型,每一个子组件都是以垂直或水平的方式来线性排列(默认为垂直)。
-应用场景:最常用的布局方式
LinearLayout中有一个重要的属性:android:layout_weight="1",这个weight代表权重。
3.Absolute绝对布局
- 已淘汰不考虑
4.RelativeLayout相对布局
- 特点:以某一个组件作为参照物,来定位下一个组件的位置的布局方式
- 应用场景:适配神器,推荐使用
5.TableLayout表格布局
- 特点:使用TableRow布局,其中TableRow代表一行。TableRow中的每一个视图组件代表一个单元格。
二、布局属性配置
1、五种Layout中Item的基础属性
- layout_width&layout_height
设置组件的宽度和高度 - layout_margin+方位&padding+方位
设置组件的外边距和内边距 - layout_gravity&gravity
确定view的位置
2、各种Layout的特有属性
2.1 FrameLayout
作为最简单的Layout,只具备基本属性
2.2 AbsoluteLayout
已淘汰,不研究。
2.3 TableLayout
除了基础属性外,还具有一个LinearLayout的属性
2.4 LinearLayout
orientation
设置布局内控件的排列方式
vertical 垂直-默认值
horizontal 水平layout_weight
比例分配属性
设置权重,按比例分配界面的空间。
2.5 RelativeLayout
a 相对于父空间
XML属性 | 说明 |
---|---|
layout_alignParent+方位 | 相对于父控件方位对齐 |
layout_centerVertical | 当前父控件的纵向中间位置 |
layout_centerHorizontal | 当前父控件的横向中间位置 |
layout_centerInParent | 当前父控件的纵横向中间位置 |
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重合 |
例如:
android:layout_below = "@+id/tab_imageview"
3.选择器selector.xml的属性
3.1 作用
通过设置selector.xml可以使控件在不同操作下显示不同的样式。
3.2 属性
XML属性 | 说明 |
---|---|
android:drawable | 放一个drawable资源 |
android:state_pressed | 按下状态,如一个按钮触摸或者点击。 |
android:state_focused | 取得焦点状态,比如用户选择了一个文本框。 |
android:state_hovered | 光标悬停状态,通常与focused state相同,它是4.0的新特性 |
android:state_selected | 选中状态 |
android:state_enabled | 能够接受触摸或者点击事件 |
android:state_checked | 被checked了,如:一个RadioButton可以被check了。 |
android:state_enabled | 能够接受触摸或者点击事件 |
以上属性的取值都是boolean属性。
3.3 举例说明
添加一个button_selector.xml
< selector xmlns:android="http://schemas.android.com/apk/res/android">
< !-- 指定按钮按下时的图片 -->
<item android:state_pressed="true"
android:drawable="@drawable/start_down"
/>
< !-- 指定按钮松开时的图片 -->
<item android:state_pressed="false"
android:drawable="@drawable/start"
/>
4.布局形状shape.xml的属性
//默认颜色
<solid android:color="#876543"/>
//哪个方向有边框线
<padding
android:bottom="0dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
//边框线颜色、大小
<stroke
android:width="1dp"
android:color="#000000" />