Android初级基础知识复习(三) —— 中级控件

中级控件

1 其他布局

1.1 相对布局RelativeLayout

  RelativeLayout下级视图的位置是相对位置,得有具体的参照物才能确定最终位置。如果不设定下级视图的参照物,那么下级视图默认显示在RelativeLayout内部的左上角。用于确定视图位置的参照物分两种, 一种是与该视图自身平级的视图,另一种是该视图的上级视图(RelativeLayout)。
XML中的相对位置属性:
在这里插入图片描述

1.2 框架布局FrameLayout

  FrameLayout也是较常用的布局,其下级视图无法指定所处的位置,只能统统从上级FrameLayout的左上角开始添加,并且后面添加的子视图会把之前的子视图覆盖掉。框架布局一般用于需要重叠显示的场合, 比如绘图、游戏界面等。
常见属性说明如下:

  1. foreground:指定框架布局的前景图像。该图像在框架内部永远处于最顶层,不会被框架内的其他视图覆盖。
  2. foregroundGravity:指定前景图像的对齐方式。该属性的取值说明同gravity。

特殊按钮

2.1 复选框CheckBox

  在学习复选框之前,先了解一下CompoundButton。在Android体系中,CompoundButton类是抽象的复合 按钮,因为是抽象类,所以不能直接使用。实际开发中用的是CompoundButton类的几个派生类,主要有复 选框CheckBox、单选按钮RadioButton以及开关按钮Switch,这些派生类都可使用CompoundButton的属性和 方法。

CompoundButton在布局文件中主要使用下面两个属性。

  1. checked:指定按钮的勾选状态,true表示勾选,false表示未勾选。默认未勾选。
  2. button:指定左侧勾选图标的图形。如果不指定就使用系统的默认图标。

CompoundButton在代码中可使用下列4种方法进行设置

  1. setChecked:设置按钮的勾选状态。
  2. setButtonDrawable:设置左侧勾选图标的图形。
  3. setOnCheckedChangeListener:设置勾选状态变化的监听器。
  4. isChecked:判断按钮是否勾选。
2.2 开关按钮Switch

  Switch是开关按钮,Android从4.0版本开始支持该控件。其实Switch是一个高级版本的CheckBox,在选 中与取消选中时可展现的界面元素比CheckBox丰富。
在这里插入图片描述

2.3 单选按钮RadioButton

  单选按钮要在一组按钮中选择其中一项,并且不能多选,这要求有个容器确定这组按钮的范围,这个容器便是RadioGroup。
  RadioGroup实质上是个布局,同一组RadioButton都要放在同一个RadioGroup节点下。RadioGroup下面除了RadioButton,还可以挂载其他 子控件(如TextView、ImageView等)。这样看来,RadioGroup就是一个特殊的线性布局,只不过多了管理单选按钮的功能。
下面是RadioGroup常用的3个方法。

  1. check:选中指定资源编号的单选按钮。
  2. getCheckedRadioButtonId:获取选中状态单选按钮的资源编号
  3. setOnCheckedChangeListener:设置单选按钮勾选变化的监听器。

RadioButton默认未选中,点击后显示选中,但是再次点击不会取消选中。只有点击同组的其他单选按 钮时,原来选中的单选按钮才会取消选中。

另外,单选按钮的选中事件一般不由RadioButton处理,而是由 RadioGroup响应。选中事件在实现时,首先要写一个单选监听器实现接口 RadioGroup.OnCheckedChangeListener,然后调用RadioGroup对象的setOnCheckedChangeListener方法注册该监听器。

自定义按钮图标先后用了3个属性,即自定义CheckBox图标时的button属性、仿iOS 开关按钮时的background属性以及自定义RadioButton时的drawableLeft属性。

  1. button:主要用于图标大小要求不高,间隔要求也不高的场合。
  2. background:主要用于能够以较大空间显示图标的场合。
  3. drawableLeft:主要用于对图标与文字之间的间隔有要求的场合。

适配视图基础

3.1 下拉框Spinner

Spinner是下拉框,用于从一串列表中选择某项,功能类似于单选按钮的组合。
下拉列表的展示方式有两种,一种是在当前下拉框的正下方展示列表,此时把spinnerMode属性设置为dropdown;另一种是在页面中部对话框形式展示列表,此时把spinnerMode属性设置为dialog
Spinner还可以在代码中调用下 列4个方法。

  1. setPrompt:设置标题文字。
  2. setAdapter:设置下拉列表的适配器。适配器可选择ArrayAdapter或SimpleAdapter
  3. setSelection:设置当前选中哪项。注意该方法要在setAdapter方法后调用.
  4. setOnItemSelectedListener:设置下拉列表的选择监听器,该监听器要实现接口 OnItemSelectedListener。
3.2 数组适配器ArrayAdapter

ArrayAdapter主要用于每行列表只展示文本的情况,有两道工序,第一道工序是构造函数,除了提供一堆原始数据外(六大行星的名称列表),还可以指定下拉框当前文本的包装盒

// 声明一个下拉列表的数组适配器
ArrayAdapter starAdapter = new ArrayAdapter(this, R.layout.item_select,
//R.layout.item_select 定义了当前选中文本的大小、颜色、对齐方式等属性。

// 设置数组适配器的布局样式
starAdapter.setDropDownViewResource(R.layout.item_dropdown);
//R.layout.item_dropdown 定义了对话框列表中每行文本的显示属性

接下来只待Spinner调用 setAdapter方法发出开动机器指令,适配器便会把一个一个包装好的糖果盒输出到屏幕界面

3.3 简单适配器SimpleAdapter

  ArrayAdapter只能显示文本列表,显然不够美观,有时我们还想给列表加上图标。这时SimpleAdapter就派上用场了,它允许在列表项中展示多个控件,包括文本与图片。
  SimpleAdapter的实现略微复杂,除了第二道工序与ArrayAdapter一样外第一道工序需要更多信息。例如,原料不但有糖果,还有贺卡,这样就得把一大袋糖果和一大袋贺卡送进流水线,适配器每次拿一颗糖果和一张贺卡,把糖果与贺卡按规定塞进包装盒。对于SimpleAdapter的构造函数来说,第2个参数Map容器放的是原料糖果与贺卡,第3个参数放的是包装盒,第4个参数放的是糖果袋与贺卡袋的名称,第5个参数放的是包装盒里塞糖果的位置与塞贺卡的位置。

编辑框

4.1 文本编辑框EditText

EditText是文本编辑框,用户可在此输入文本等信息。
EditText的常 用属性说明如下:

  1. inputType:指定输入的文本类型,代码中对应的方法是 setInputType。若同时使用多种文本类型,则可使用竖线“|”把多种文本 类型拼接起来。
  2. maxLength:指定文本允许输入的最大长度。该属性无法通过代码设置。
  3. hint:指定提示文本的内容,代码中对应的方法是setHint。
  4. textColorHint:指定提示文本的颜色,代码中对应的方法是setHintTextColor。

在这里插入图片描述
编辑框除了上述文本与提示文本的基本操作外,实际开发中还常常关注4个方面:更换编辑框的光标、 更换编辑框的边框、自动隐藏输入法、输入回车符自动跳转。

4.1.1 更换编辑框的光标

EditText与光标处理有关的属性主要有两个,分别是:

  1. cursorVisible,指定光标是否可见。代码中对应的方法是setCursorVisible
  2. textCursorDrawable,指定光标的图像。该属性无法通过代码设置。

如果要隐藏光标,就要把cursorVisible设置为false。如果要变更光标的样式,就要修改 textCursorDrawable设置新图像。

4.1.2 更换编辑框的边框

EditText的边框通过background属性控制,如果要隐藏边框,就要把background设置为**@null**;如果要修改边框的样式,就要将background设置为其他边框图形。

4.1.3.自动隐藏输入法

  如果页面上有EditText控件,开发者又没做其他处理,那么用户打开该页面时往往会自动弹出输入法。 这是因为编辑框会默认获得焦点,即默认模拟用户的点击操作,于是输入法的软键盘就弹出了。要想避免这种情况,就得阻止编辑框默认获得焦点。比较常见的做法是给该页面的根节点设置focusablefocusableInTouchMode属性,通过将这两个属性设置为true可强制让根节点获得焦点,从而避免输入法自动弹出的尴尬。
 &emsp想让编辑框文本达到指定长度时自动关闭输入法,开发者需要获得两个参数,第一个是该编辑框允许输入的最大长度,第二个是当前已经输入的文本长度。当已输入的文本长度等于最大长度时,即可触发关闭软键盘。自动隐藏输入法可分解为3个功能点,分别是获取编辑框的最大长度监控当前已输入的文本长度关闭软键盘
(1)获取编辑框的最大长度前面提到maxLength属性可设置最大长度,但是EditText并没有直接提供获取最大长度的方法,不过开发者可以通过反射方式间接获得最大长度,具体代码参见本书附带源码middle模块里面ViewUtil.java的getMaxLength方法。
(2)监控当前已输入的文本长度这个监控操作用到一个文本监听器接口TextWatcher,该接口提供了3个监控方法,具体说明如下。

  1. beforeTextChanged:在文本改变之前触发。
  2. onTextChanged:在文本改变过程中触发。
  3. afterTextChanged:在文本改变之后触发。

(3)关闭软键盘输入法通过系统服务INPUT_METHOD_SERVICE管理,所以隐藏输入法也要通过该服务实现。
① 调用toggleSoftInput方法:
在这里插入图片描述
② 调用hideSoftInputFromWindow方法:
在这里插入图片描述

4.1.4. 输入回车符自动跳转

  在录入用户信息时(比如输入姓名、密码等),往EditText控件输入回车键,常常不是换行而是让光标 直接跳到下一个编辑框。该功能也用到了文本监听器接口TextWatcher,主要监听用户是否输入回车符,如 果监控到已输入回车符,就自动将焦点移到下一个控件,从而实现回车符自动跳转的要求。

4.1.5 自动完成编辑框AutoCompleteTextView

  自动完成编辑框一般用于搜索文本框,如在电商App的搜索框输入商品文字时,下方会自动弹出提示词 列表,方便用户快速选择具体商品。AutoCompleteTextView的实现原理是:EditText结合监听器TextWatcher 与下拉列表Spinner,一旦监控到EditText的文本发生变化,就自动弹出适配好的文字下拉列表,选中具体的 下拉项向EditText填入相应文字。
  AutoCompleteTextView新增的几个属性都与下拉列表有关,自动完成编辑框的属性和设置方法说明如下所示:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值