所有UI组件都称为View
- 一个显示数据的组件。
- 用于容纳组件的组件
- 是一个单独的组件(比如一个按钮),或者是一个容器
(比如一个可以容纳其它组件的布局)
在android开发中使用的数据单位:
- px:像素点(不建议使用)
- in:英寸(不建议使用)
- mm:毫米(不建议使用)
- pt:磅(不建议使用)
- dp(dip):与密度无关的像素,在密度160dp的屏幕上,1dp=1px,320密度的屏幕上
1dp=2px(推荐) - sp:与密度无关的字体大小(推荐)
2、UI布局
Android为我们提供了6种布局组件,布局实际上就是容器,内部可以包含其它任意组件或布局
在实际开发中,我们需要注意的是:使用更少的布局嵌套有利于提高界面的渲染效率。
(1)LinearLayout(线性布局:以垂直或水平方向布局组件)、
公共属性:
设置组件的宽度高度(宽高是每个组件必须设置的属性),有两种设置方式:
<1>使用常量(match_parent 匹配父组件,wrap_content 包裹内容,fill__parent填充
父组件,在API8之前使用,与match_parent作用一样)
<2>使用具体的值:比如 120dp
android:layout_width="match_parent"
android:layout_height="match_parent"
//给组件添加ID:有就引用,没有就添加,会在R文件中生成对应的ID索引
android:id="@+id/linearLayout1"
android:paddingBottom="16dp" 表示设置内间距的下边
android:paddingLeft="16dp" 表示设置内间距的左边
android:paddingRight="16dp" 表示设置内间距的右边
android:paddingTop="16dp" 表示设置内间距的上边
或者直接使用:android:padding="16dp" 表示设置内间距的上下左右
android:layout_marginBottom="16dp" 表示设置外边距的下边
android:layout_marginEnd="16dp" 表示设置外边距的右边
android:layout_marginStart="16dp" 表示设置外边距的左边
android:layout_marginTop="16dp" 表示设置外边距的上边
android:layout_margin="16dp" 表示设置外边距
设置背景颜色(引用color.xml定义的,#fff,#00ff00,#ff00ff00)
#ARGB(A透明度,R红色值,G绿色值,B蓝色值)
android:background="#fff"
android:layout_gravity="center" 组件相对于父组件的位置
android:gravity="center" 组件本身内部的内容的位置
特有属性:
android:orientation="horizontal" 设置为水平方向
android:orientation="vertical" 设置为垂直方向
android:layout_weight="1" 设置权重(比例): 在linearLayout内的所有组件
的权重总和作为比例的总数,layout_weight设置为多少表示所占的权重比例,当只有
一个组件设置了layout_weight时,表示其它组件占用的大小后剩下的空间都被该组件
占用。
(2)RelativeLayout:相对布局
此布局在实际开发中建议使用,原因是使用RelativeLayout可以非常方便的实现复杂的布局
而减少布局的嵌套,来提高布局的性能。
属性参考PPT
(3)TableLayout:表格布局(了解,开发中不常使用)
使用TabRow来定义表格的一行,在TabRow内的每个组件表示一行中的一列。
tabLayout中使用:android:stretchColumns="1" 表示第1列拉伸
列的组件中使用:layout_column="0" 表示组件在第几列
列的组件中使用:android:layout_span="2" 表示当前组件占用2列(合并)
(4)FrameLayout 帧布局
组件在布局中以层叠的方式出现,默认在左上角位置,后面的组件会覆盖前面的组件。
我们可以使用android:layout_gravity="left|top" 来指定相对位置,left|top 表示左上角
通常在实际应用中:我们使用FrameLayout实现多个布局之间的交替显示
设置组件是否可示:gone 不显示不占位置,visible 显示,invisible 不显示占位置
android:visibility="gone"
(5)AbsoluteLayout:绝对布局
不推荐使用,已被废弃,使用绝对坐标来布局组件。
(6)GridLayout :网格布局
android 4.0以后新增的布局,API14以上,用于实现网格布局,我们可以使用以下属性
设置:
android:layout_row="0" 在网格中的位置是第0行
android:layout_column="0" 在网络中的位置是第0列
android:layout_rowSpan="2" 合并两行为一行
android:layout_columnSpan="2" 合并两列为一列
android:layout_gravity="fill_vertical" 填充方式为垂直或水平