目录
- 前言
- Android帮助文档
- Android三种控制组件行为的方式
- 1. 在XML布局文件中通过XML属性进行控制
- 2. 在Java程序代码中通过调用方法进行控制
- 3. XML布局文件和Java代码混合控制
- Android 六种布局模型
- 1、LinearLayout 线性布局
- 2、TableLayout 表格布局
- 3、FrameLayout 帧布局
- 4、RelativeLayout 相对布局
- 5、GridLayout 网格布局
- 6、AbsoluteLayout绝对布局
- 其他组件
- ImageView - 图片视图
- ListView - 列表视图
前言
Android应用的大部分组件都放在android.widget包及子包、android.view包及其子包中。所有的UI组件都继承了View类。
View类有一个很重要的子类ViewGroup类。开发者可以对View和ViewGroup进行组合,来完成应用程序界面设计。
Android帮助文档
对于每个Android开发者而言, Android提供的官方文档是必看的。在Android SDK安装目录下找到docs子目录,打开docs子目录index.html,即是Android的API文档。
Android三种控制组件行为的方式
1. 在XML布局文件中通过XML属性进行控制
2. 在Java程序代码中通过调用方法进行控制
在Android应用的res/layout目录下定义一个主文件名任意的XML布局文件之后,Java代码通过如下方法在Activity中显示该视图:
-
setContentView(R.layout.<资源文件名字>);
当在布局文件中添加多个UI组件时,UI组件通过android:id属性设置,如: -
android:id=“@+id/<组件ID>”
该属性的属性值代表该组件的唯一标识。可能通过以下方法在Java代码中访问该UI组件: findViewById(R.id.<android.id属性值>);
Android允许开发者像开发Swing应用一样,完全在java代码中控制UI界面。
// 设置该Activity显示layout
super.setContentView(layout);
layout.setOrientation(LinearLayout.VERTICAL);
// 创建一个TextView
final TextView show = new TextView(this);
// 创建一个按钮
Button bn = new Button(this);
bn.setText(R.string.ok);
bn.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
// 向Layout容器中添加TextView
layout.addView(show);
// 向Layout容器中添加按钮
layout.addView(bn);
3. XML布局文件和Java代码混合控制
Android 六种布局模型
Layout就负责管理控件在屏幕的位置的类,下面是android SDK已经内置的简单几种布局模型:
- LinearLayout(线性布局)
- TableLayout(表格布局)
- FrameLayout(帧布局)
- RelativeLayout(相对布局)
- GridLayout(网格布局)
- AbsoluteLayout(绝对布局)
1、LinearLayout 线性布局
Android 的线性布局不会换行,LinearLayout在布局中纵向(默认排版)或者横向排列。
xml | java | 解释 |
android:orientation | setOrientation(int) | 线性布局的朝向,纵向vertical或横向horizontal |
android:gravity | setGravity(int) | 设置布局管理器内的组件的对齐方式,支持top/bottom/left/right/center_vertical/fill_vertical/center_horizontal/center等 |
2、TableLayout 表格布局
并不需要明确声明行和列,而是通过添加TableRow、其它组件来控制表格的行数和列数。
在表格布局中,列的宽度由该列中最宽的那个单元格决定。整个表格布局的宽度取决于父容器的宽度。
表格布局组件属性 | 说明 |
android:collapseColumns | 隐藏指定的列,多个列号用逗号隔开 |
android:shrinkColumns | 收缩指定的列以适合屏幕,不会挤出屏幕 |
android:stretchColumns | 尽量把指定的列填充空白部分 |
android:layout_column | 控件在TableRow中所处的列 |
android:layout_span | 该控件所跨越的列数 |
3、FrameLayout 帧布局
FrameLayout框架布局是在屏幕上开辟一个区域以填充所有的组件,使用框架布局会将所有的组件都放在屏幕的左上角,而且所有的组件层叠显示。
xml | 方法 | 说明 |
android:foregroud | setForegroud(Drawable) | 设置帧布局的前景图像 |
android:foregroudGravity | set ForegroudGravity(int) | 定义绘制前景图像的gravity属性 |
4、RelativeLayout 相对布局
相对布局由RelativeLayout代表,相对布局容器内子组件的位置总是相对兄弟组件、父容器决定的。
如果A组件的位置由B组件的位置来决定的,Android要求先定义B组件,再定义A组件。
xml | 方法 | 说明 |
android:ignoreGravity | setIgnoreGravity(int) | 设置哪个组件不受gravity组件的影响 |
android:gravity | setGravity(int) | 设置该布局容器内部各子组件的对齐方式 |
相对布局组件属性 | 说明 |
android:layout_above | 将该控件的底部至于给定ID的控件之上 |
android:layout_below | 将该控件的顶部至于给定ID的控件之下 |
android:layout_toLeftOf | 将该控件位于给定ID的控件的左边 |
android:layout_toRightOf | 将该控件位于给定ID的控件的右边 |
android:layout_alignBottom | 将该控件的底部边缘与给定ID控件底部边缘对齐 |
android:layout_alignLeft | 将该控件的左边缘与给定ID控件左边缘对齐 |
android:layout_alignRight | 将该控件的右边缘与给定ID控件右边缘对齐 |
android:layout_alignTop | 将给定控件的顶部边缘与给定ID控件顶部对齐 |
5、GridLayout 网格布局
xml | 方法 | 说明 |
android:rowCount | setRowCount(int) | 控制网格的行数 |
android:columnCount | setColumnCount(int) | 控制网格的列数 |
android:layout_columnSpan | 横跨几列 |
6、AbsoluteLayout绝对布局
绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差。
使用绝对布局时,每个子组件都要可指定如下两个XML属性。
android:layout_x:指定该子组件的X坐标。
android:layout_y:指定该子组件的X坐标。
(0,0)是左上角,下移或右移时,坐标值增加
允许元素重叠(但是不推荐
其他组件
- TextView 显示文本
- EditText 编辑文本内容
- Button 按钮
- ImageButton 图片按钮
- RadioButton 单选按钮
- CheckBox 复选框
ImageView - 图片视图
ImageView继承了View组件,它的主要功能就是显示图片,其实它不仅可以显示图片,任何Drawable对象都可使用ImageView来显示。
XML属性 | 方法 | 说明 |
android:adjustViewBounds | setAdjustViewBounds(boolean) | 设置ImageView是否调整自己的边界来保持所显示图片的长宽比 |
android:maxHeight | setmaxHeight(int) | 设置ImageView的最大高度 |
android:maxWidth | setmaxWidth(int) | 设置ImageView的最大宽度 |
android:scaleType | setScaleType(ImageView.ScaleType) | 设置所显示图片如何缩放或移动以适应ImageView的大小。 |
android:src | setImageResource(int) | 设置ImageView所显示的Drawable对象的ID |
ListView - 列表视图
列表视图(ListView)是使用非常广泛的一种组件,以垂直列表的形式显示所有列表项。
ListView常用的XML属性
ListView常用的XML属性 | 说明 |
android: choiceMode | 设置ListView的选择行为 |
android:divider | 设置ListView列表项的分隔条(可用颜色/Drawable) |
android:dividerHeight | 设置分隔条的高度 |
android:entries | 指定数组资源,将根据数组资源生成ListView |
android:footerDividersEnabled | 若为false,不在footView前绘分隔条 |
android:headerDividersEnabled | 若为false,不在headerView前绘分隔条 |