android自学第二天 Android API Guide学习和LinearLayout布局及基本UI控件
16lz
2021-01-23
Android API Guide学习和 LinearLayout 布局及基本UI控件
一、Android UI框架:【了解】
Android中所有的UI(用户界面)元素都是使用View和ViewGroup对象建立的,View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象,而ViewGroup是一个包含多个的View和ViewGroup的容器,用来定义UI布局。
Android提供了一系列的View和ViewGroup的子类,开发者可以灵活地组合使用它们来完成界面布局、界面元素绘制和用户交互等工作,同时,开发者还可以选择性地继承一些系统提供的View,来自定义View,把自己定义的界面元素显示给用户。
Android使用View类作为界面开发的超类,所有的界面开发都与View有关。多个View是一个ViewGroup,但ViewGroup本身继承自View,所以,Android界面由View和ViewGroup随意组合而成,Android的界面开发其实就是对View及其各种子孙类做操作。
二、View和ViewGroup
Android的UI开发使用层次模型来完成,一般都是在一个ViewGroup中嵌套多层ViewGroup,每一层中含有随意数目的View。我们可以将整个屏幕看做一个ViewGroup,它同时也是一个View,而在这个整体的ViewGroup之中,又有多个ViewGroup和View,每个ViewGroup中又可以有多个子ViewGroup和View。基本结构如下图所示。
三、布局的介绍:【了解】 1、在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。 2、在2.2操作系统中将AbsoluteLayout过期。而目前FrameLayout、TableLayout也逐渐少用。 3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面) 总之,Android中一共有 六种布局。目前推荐使用 RelativeLayout、 LinearLayout、 GridLayout三种布局。
四 、View类的常用xml属性: (一)、类结构: java.lang.Object ↳ android.view.View
(二)、View及其子元素常用属性:(各种布局及控件的共同属性)
- android:id
- android:background
- android:onClick 为该控件的单击事件绑定监听器
- android:padding 设置控件四周的填充区域
- android:visibility 设置该控件是否可见(invisible/visible/gone)
- android:alpha 设置该组件透明度
- android:layout_height 子组件的布局高度
- android:layout_width 子组件的布局宽度
- android:layout_margin 设置子组件的外边距
五、LinearLayout:【掌握】 (一)、概念:线性布局控制其中的控件或组件横向或纵向排列。不线性布局布局中,每一行或每一列只能放一个控件。并且线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。 线性布局的默认方向是水平方向(Horizontal)。
(二)、 LinearLayout的常用 属性: 1.android:orientation 定义布局内控件或组件的排列方式 可选项:vertical (所有控件竖直摆放)、 horizontal(所有控件水平摆放)
2.android:layout_width 定义控件的宽度 可选项:fill_parent / match_parent/ wrap_content/绝对数值 备注:fill_parent / match_parent的效果完全一致,都是填充整个父控件。但是自2.2版本开始推荐使用match_parent 。wrap_content指的是该控件的宽度正好包裹内容物。
3.android:layout_height 定义控件的高度 可选项:fill_parent / match_parent/ wrap_content/绝对数值 备注:fill_parent / match_parent的效果完全一致,都是高度填充整个父控件。wrap_content指的是该控件的高度正好包裹内容物。
4.android:id 设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。 设置id的格式为:android:id = "@+id/id的名字"
5.android:background 设置控件的背景颜色或背景图片 例如:android:background="#ffffff" android:background="@drawable/图片名称" 【备注:】 颜色有RGB颜色格式和ARGB格式。G R B是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。 #FFFFFF 代表白色 #000000 黑色 #FFFFFFFF 完全不透明 #00FFFFFF 完全透明 #88FFFFFF 半透明
6.android:layout_weight 设置控件的权重。即各控件在水平或者垂直方向上平均分配。 备注:如果是水平方向设置权重,要将android:layout_width设置为0dp,如果是垂直方向上使用权重,要将android:layout_height设置为0dp。否则权重容易受到高度或宽度的干扰而出现偏差。
7.android:gravity 该属性用来控制该View的内容物的位置。 如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。 如果该属性出现在Button、TextView、EditText等控件中,则用来控制这些控件上的文字的位置。 可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。 【备注:】本属性与android:layout_gravity不同。
8.android:layout_gravity 该属性用于设置控件相对于容器的对齐方式。 可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。 这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravity为bottom不起作用;而水平线性布局中,android:gravity为right不起作用。 【备注:】而本属性是android:layout_gravity属性,与 android:gravity 属性不同。
(三)、LinearLayout的特有属性:【重新归纳:去除公共属性后的 特有属性】 1、android: orientation 布局管理器内组件的排列方式 2、android: gravity 设置布局管理器内组件的对齐方式
(四)、 LinearLayout 子元素的特有属性: 1、android: layout_weight 子元素在 LinearLayout 中所占的权重 2、android: layout_gravity 子元素在 LinearLayout 中的对齐方式
四、Android UI控件及UI组件: (一)、控件名称:【标红色的为常用的】
- TextView 文本视图
- EditText 文本编辑框
- Button 按钮
- ImageView、Gallery 图像视图、画廊(建议过期)
- ImageButton 图片按钮
- ToggleButton 、Switch 开关按钮、开关
- RadioButton 单选按钮
- CheckBox 多选框
- Spinner 下拉列表
- AutoCompleteTextView 自动完成文本框
- ProgressBar 进度条
- Dialog(AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog)提示对话框、进度对话框、时间选择对话框、日期选择对话框
- ListView、GridView 列表视图【最重要的UI组件】、 网格视图
- ExpandableListView 可展开列表视图
- SearchView 搜索框
- TabHost 书签选项卡
- Notification 、Toast 通知 、 吐司(短时提醒)
- Menu(OptionMenu /SubMenu、ContextMenu) 菜单(选项菜单、上下文菜单)
- ImageSwitcher、TextSwitcher 、 ViewPager 图像切换器、文本切换器
- ActionBar 动作导航条
五、基本控件:——TextView: (一)、TextView类结构: java.lang.Object ↳ android.view.View ↳ android.widget.TextView
(二)、TextView 常用属性: 1、andorid: text 设置文本的内容 2、 android: textColor 设置文本的颜色 3、 android: textSize 设置文本的字体大小(sp) 4、andorid:height 设置文本的高度,以像素为单位 5、 android:width 设置文本的宽度,以像素为单位 6、 android: inputType 设置文本的类型。例如是普通文本,还是email,password,数字等等。 7、 android:singleLine 设置文本是否是单行显示。 8、android: gravity 设置文本框内文本的对齐方式。可选项有:top、bottom、left、right、center、fill、center_vertical、center_horizontal、fill_horizontal等等。这些属性值也可以同时指定,各属性值之间用竖线隔开。例如 right| bottom 9、android: drawableLeft 用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。 10、android:drawableRight 用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。 11、android:drawableTop 用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。 12、android:drawableBottom 用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。 13、android: autoLink 给指定的文本增加可单击的超链接。可选项为:none、web、email、phone、map和all。 14、android: hint 设置当文本框内文本内容为空时,默认显示的提示性文字。
【补充:】 1、android:textAllCaps="true" 设置所有字母都大小 2、android:ellipsize="end" 文字过长,设置省略号。可选项:start , end ,middle,marquee
- android:ellipsize="start" 省略号在开头
- android:ellipsize="middle" 省略号在中间
- android:ellipsize="end" 省略号在结尾
- android:ellipsize="marquee" 跑马灯显示
- android:ellipsize="marquee"
- android:singleLine="true"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:marqueeRepeatLimit="marquee_forever"
六、基本控件:——EditText: (一)、 EditText 类结构: java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.EditText
所以 EditText 继承了TextView的所有属性。
(二)、android: inputType的可选项:
(三)、android:imeOptions 设置软键盘的回车键的功能 1. android:imeOptions =“actionSearch” 搜索 2 . android:imeOptions =“actionGo” 前往 3. android:imeOptions =“actionNext” 下一个 4.android:imeOptions =“actionDone” 完成
- android:inputType="textPersonName"
- android:inputType="textPassword"
- android:inputType="numberPassword" 只可以输入数字
- android:inputType="textEmailAddress"
- android:inputType="phone" 只允许输入数字,括号等特殊符号,不可以输入字母。
- android:inputType="textPostalAddress"
- android:inputType="time"
- android:inputType="date"
- android:inputType="number"
绑定相应的监听如下所示:
(三)、android:imeActionLabel 设置自定义回车键的按钮文本内容 android:imeActionLabel="@string/launch" 七、基本控件:——Button: (一)、Button类结构: java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.Button
所以Button继承了TextView的所有属性。 Button绑定监听的四种方式 (二)、 button按钮添加监听事件的步骤: 方式一: 1.在