赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 手持终端

首页 > 专业技术 > 手持终端 > Android的常用控件及菜单
Android的常用控件及菜单

用户界面设计是Android应用开发中最基本和最重要的内容。Android中,所有的UI界面都是由View类和ViewGroup类及其子类组合而成的。其中View类是所有UI组件的基类,提供了文本输入框和按钮等UI对象;而ViewGroup类是容纳这些UI组件的容器,提供流式布局、表格布局以及相对布局等布局架构,ViewGroup类本身也包括View类的子类。 View类用来呈现数据或一些状态的变化,同时也是用户界面的基本组成组件,它会占用一部分界面上的空间,并且可以处理一些输入和输出所引发的事件。
控件用于用户界面UI中向用户展示信息,Android控件分为系统控件及自定义控件。系统控件是系统定制好的,可以直接使用,是应用程序开发中最基础的组件;自定义控件是在系统控件基础上根据自身需求扩展产生的新控件。Android系统为常见控件提供了一些通用属性,也对每种控件提供了一些特有属性。控件的通用属性有:

属性

描述

android:id

设置控件的索引,Java程序中通过R.id引用,带+号表示新资源名

android:layout_height

设置布局高度,可用match_parent、fill_parent、wrap_content,wrap_content表示大小刚好够显示当前控件,match_parent和fill_parent表示填满父控件的空白

android:layout_width

设置布局宽度,可用match_parent、fill_parent、wrap_content

android:text

描述控件文本值

android:padding

描述控件内容与控件边框的距离

android:margin

描述控件之间的距离

1.文本框TextView:

TextView类代表文本框,是屏幕中一块用于显示文本的区域,类似网页的label标记。TextView继承android.view.View类的方法和属性,也是Button、CheckedTextView、Chronometer、DigitalClock、EditText的父类。通过在XML布局中添加<TextView>标记来使用,基本语法:
<TextView android:id="@+id/textview1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="hello world" />
代码中,id表示定义了变量textview1,会自动写进R.java,可在主程序中通过R.id.textview1来获取这个控件;layout_width和layout_height表示TextView的宽度和高度,设置为wrap_content表示将完整显示其内部文本,布局元素将根据内容更改大小;text属性表示要显示的文本内容。
TextView是一个不可编辑的文本框,常用来显示静态字符串,有很多属性:

属性

描述

android:textAppearance

设置文本外观

android:textColor

设置文本颜色

android:textColor
Highlight

设被选中文本的底色,默认为蓝色

android:textColorLink

设置文本链接的颜色

android:textScaleX

设置文字之间的间隔,默认1.0f

android:textSize

设置文字的大小,推荐使用单位sp

android:textStyle

设置字形,bold粗体、italic斜体、bolditalic粗斜体,可设置多个值

android:typeface

设置文本字体,值normal、sans、serif、monospace

android:gravity

设置文本对齐方式,可选值top、bottom、left、right、fill等,可用多值

android:singleLine

设置单行显示。当文本不能完全显示时,超出部分用“...”替代

android:height

设置文本框的高度,支持单位px、dp、sp、in、mm

android:width

设置文本框的宽度,支持单位px、dp、sp、in、mm

android:maxWidth

设置文本框的最大宽度

android:minWidth

设置文本框的最小宽度

android:maxHeight

设置文本框的最大高度

android:minHeight

设置文本框的最小高度

android:ellipsize

设置当文字超出文本框长度时如何显示,值有start、middle、marquee

android:marqueeRepeat
Limit

在ellipsize指定marquee时,设置重复滚动的次数,设为marquee_forever时表示无限次

android:lines

设置文本的行数

android:maxLines

设置文本的最大显示行数,与width或layout_width结合使用

android:minLines

设置文本的最小行数

android:lineSpacingExtra

设置行间距

android:lineSpacing
Multiplier

设置行间距的倍数

android:autoLink

设置文本为可单击的链接,可选值none、web、email、phone、map、all

android:linkClickable

设置链接是否单击链接

android:scrollHorizontally

设置文本超出文本框宽度时,是否出现滚动条

android:drawableBottom

用于在文本框内文本的底端绘制指定图像,通过"@drawable/name"设置

android:drawableLeft

用于在文本框内文本的左侧绘制指定图像,通过"@drawable/name"设置

android:drawableRight

用于在文本框内文本的右侧绘制指定图像,通过"@drawable/name"设置

android:drawableTop

用于在文本框内文本的顶端绘制指定图像,通过"@drawable/name"设置

android:drawablePadding

设置text与drawable的间隔,可设置为负数

android:shadowRadius

设置阴影的半径,一般设置3.0效果比较好,设为0.1则为字体颜色

android:shadowColor

设置文本阴影的颜色,需要与shadowRadius一起使用

android:shadowDx

设置阴影横向坐标开始位置

android:shadowDy

设置阴影纵向坐标开始位置

文本框操作的基本方法:

方法

描述

getDefaultMovementMethod()

获取默认的箭头按键移动方式

getText()

获取文本内容

length()

获取TextView中文本长度

getEditableText()

取得文本的可编辑对象,可通过来对TextView操作

getLayout()

获取TextView的布局

getKeyListener()

获取键盘监听对象

setKeyListener()

设置键盘事件监听

setTransformationMethod()

设置文本是否显示成特殊字符

getCompoundPaddingBottom()

该方法返回TextView的底部填充物

setCompoundDrawables()

设置Drawable图像显示的位置之前需调用setBounds

setCompoundDrawablesWithIntrinsicBounds()

设置Drawable图像显示的位置,边界不变

setPadding()

根据位置设置填充物

getAutoLinkMask()

返回自动链接的掩码

setTextColor()

设置文本显示的颜色

setHighlightColor()

设置选中时文本显示的颜色

setShadowLayer()

设置文本显示的阴影颜色

setHintTextColor()

设置提示文字的颜色

setLinkTextColor()

设置链接文本的颜色

setGravity()

设置当前TextView超出了文本时横向以及垂直对齐

2.编辑框EditText:

EditText类是TextView的子类,用于在屏幕上显示文本输入框,接收用户输入的信息。通过在XML布局中添加<EditText>标记来使用编辑框控件。
EditText的属性有:

属性

描述

android:digits

设置允许输入哪些字符,如"1234567890.+-*/%\n()"

android:numeric

如果文本为数字输入

android:password

设置文本以密码方式显示

android:phoneNumber

设置文本只接受电话号码

android:privateIme
Options

设置输入法选项

android:editable

设置是否可编辑

android:inputType

设置文本的类型,用于提示输入法显示合适的键盘类型

android:hint

text为空时显示的文本提示信息,并可用textColorHint设置颜色

android:textColorHint

设置提示信息文字的颜色,默认为灰色,与hint一起使用

android:selectAllOnFocus

如果文本是可选的,是否让它获得焦点而选中所有文本

android:cursorVisible

设定光标为显示/隐藏,默认显示

android:capitalize

设置英文字母大写类型,需要弹出输入法才能看到

EditText提供了用于设置和控制文本框的方法:

方法

描述

getText()

获取文本内容

selectAll()

获取输入的所有文本

setText(CharSequence text,TextView.BufferType type)

设置编辑框中的文本内容

开发过程中,常用inputType属性值:

属性值

功能

属性值

功能

text

普通文本,默认

textLongMessage

长信息

textCapCharacters

字母大写

textPassword

密码

textCapWords

每个单词的首字母大写

number

数字

textAutoCorrect

自动完成

numberSigned

带符号数字格式

textMultiLine

多行输入

numberDecimal

带小数点浮点格式

textNoSuggestions

不提示

phone

拨号键盘

textUri

网址

datetime

时间日期

textEmailAddress

电子邮件地址

date

日期键盘

textEmailSubject

邮件主题

time

时间键盘

textShortMessage

短信

 

3.按钮Button:

Button是最常用的控件之一,是TextView的子类,能够通过单击触发onClick事件,实现某种功能。可以为按钮加上android:background属性为按钮添加背景。按钮常用的方法有:

方法

描述

getText()

获取按钮的文本内容

geText(CharSequence text)

设置按钮的文本内容

setOnClickListener()

对按钮的单击时间进行监听,为调用方法

为按钮添加单击事件监听器的方法为:
Button button=(Button)findViewById(R.id.button);
button.setOnClickListenter(new buttonOnClickListenter());
class buttonOnClickListener implements OnClickListener{
 @Override
 public void onClick(View v){
  //执行的代码
 }
}
还可以在Activity中写一个包含View类型参数的方法:
public void loginClick(View v){
 //执行的代码
}
那么就可以在布局文件中通过给按钮添加属性android:onClick="loginClick"语句为按钮添加单击事件监听器。

4.图片按钮ImageButton:

ImageButton继承于Button,是通过设置src属性显示图像的按钮,主要属性android:src。

5.复选框CheckBox:

CheckBox是复选框,继承于Button,支持Button的属性,表示可以选择多个选项的控件。使用CheckBox一般通过在XML布局文件中使用<CheckBox>标记来实现,它具有android:checked属性,表示选中的项。CheckBox类提供了用于设置和控制复选框的方法:

方法

描述

dispatchPopulateAccessibilityEvent()

在子视图创建时,分派一个辅助事件

isChecked()

判断组件状态是否勾选

onResourceInstanceState()

设置视图恢复以前的状态,该状态由onSaveInstanceState()生成

performClick()

执行Click动作,该动作会触发事件监听器

setButtonDrawable()

根据Drawable对象设置组件的背景

setChecked()

设置组件的状态。若参数为true则设置组件为选中状态

setOnCheckedChangeListener()

CheckBox是常用的设置事件监听器的方法,状态改变时调用

toggle()

改变按钮的当前状态

drawableStateChanged()

视图状态的变化影响到所显示可绘制的状态时调用该方法

getDrawableState()

获取文本框为空时,文本框默认显示的字符串

onCreateDrawableState()

为当前视图生成新的Drawable状态

复选框是一种双状态按钮的特殊类型,有选中或未选中状态,通过单击复选框可触发复选框状态的改变。使用时,需要给每一个复选框都添加一个事件监听器。

6.单选按钮组RadioGroup与单选按钮RadioButton:

RadioButton为单选按钮,继承于Button,单选按钮需要放置在一个单选按钮组RadioGroup中,同组中有且仅有一个单选按钮被选中,RadioGroup是LinearLayout的子类。在XML布局文件中使用单选按钮,需要先添加<RadioGroup></RadioGroup>单选按钮组,然后在其中添加<RadioButton>标记获得单选按钮。RadioGroup的属性orientation属性表示单选按钮的排列方式,水平或垂直排列。
常用的设置和控制单选按钮组方法有:

方法

描述

addView()

根据布局指定的属性添加一个子视图

check()

当传递-1作为指定的选择标识符时,此方法与clearCheck()等效

clearCheck()

清除选中状态

getText()

用于获取单选框的值

generateLayoutParams()

返回一个新的布局实例

setOnCheckedChangeListener()

注册单选按钮状态改变监听器

getCheckedRadioButtonId()

返回该单选按钮组中所选择的单选按钮的标识ID

7.开关按钮ToggleButton:

ToggleButton、Switch、CheckBox和RadioButton组件均继承自android.widget. CompoundButton,都是选择类型的按钮,CompoundButton按钮有checked和unchecked两种状态。ToggleButton所支持的XML属性和方法有:

XML属性

对应方法

功能

android:checked

setChecked(boolean)

设置该按钮是否被选中

android:textOff

setTextOff(CharSequence)

设置按钮的状态关闭时所显示的文本

android:textOn

setTextOn(CharSequence)

设置按钮的状态打开时所显示的文本

默认的ToggleButton比较难看,实际使用时可以通过设置按钮的背景图片来实现较为美观的按钮。可使用background属性来设置背景使用的资源文件,资源XML文件放置在drawable目录下,示例代码:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/btn_open"/>
<item android:drawable="@drawable/btn_close"/>
</selector>

8.开关控件Switch:

Switch的使用方法与ToggleButton类似,所支持的属性和方法有:

XML属性

对应方法

功能

android:checked

setChecked(boolean)

设置开关状态,是否被选中

android:textOff

setTextOff(CharSequence)

设置开关状态关闭时所显示的文本

android:textOn

setTextOn(CharSequence)

设置开关状态打开时所显示的文本

android:switchMinWidth

setSwitchMinWidth(int)

设置开关的最小宽度

android:textStyle

setSwitchTypeface(Typeface,int)

设置开关的文本风格

android:typeface

setSwitchTypeface(Typeface)

设置开关的文本的字体风格

android:switchPadding

setSwitchPadding(int)

设置开关与标题文本之间的空白

android:thumb

setThumbResource(int)

使用自定义的Drawable绘制开关的按钮

android:track

setTrackResource(int)

使用自定义的Drawable绘制开关轨迹

9.下拉列表Spinner:

Spinner提供了下拉列表功能,多个item子元素组合成一个Spinner,这些子元素之间相互影响,同时最多有一个子元素被选中。Spinner是LinearLayout的子类,通过在XML布局文件中加入<Spinner>标记来使用。基本语法为:
<Spinner android:entries="@array/type" android:id="@+id/spinner"
android:layout_width="wrap_content" android:layout_height="wrap_content"/>
代码中,entries为可选属性,用来指定一个列表项数组,通常对应res/values中的arrays.xml文件,用于添加列表项的数组资源文件,代码为:
<?xml version="1.0" encoding="utf-8" ?>
<resources>
 <string-array name="type">
  <item>水果</item>
  <item>蔬菜</item>
  <item>衣服</item>
  <item>电器</item>
 </string-array>
</resources>
其中,string-array的name属性值type表示该数组资源名称,对应Spinner中entries属性值。如果entries属性不指定,也可以在Java代码中通过为其指定适配器的方式来指定资源。常用的方法有:

方法

描述

getBaseline()

获取组件文本基线的偏移

getPrompt()

获取被聚焦时的提示消息

performClick()

效果同单击,该方法执行会触发OnClickListener

setAdapter(SpinnerAdaper adapter)

设置选项,适配器adapter用于给下拉列表提供选项数据

setPromptId()

设置对话框弹出时显示的文本

setOnItemSelectedListener()

设置下拉列表子项被选中监听器

Spinner可通过数组适配器读取XML中定义的子元素,这种方式称为适配器模式。Android系统提供了多种适配器,ArrayAdapter是比较简单且经常使用的一种数组适配器,将数据放入一个数组来显示。

10.自动完成文本框AutoCompletTextView:

AutoCompletTextView用于实现输入一定字符后,显示出一个以输入字符开头的下拉菜单供用户选择。当用户选择某项后,该控件中的字符为当前用户所选项。在屏幕中添加自动完成文本框,可以通过XML布局文件中添加<AutoCompleteTextView>标记来实现。AutoComplet TextView控件继承自EditText控件,因此支持EditText控件提供的属性,同时也有自己的属性:

属性

描述

android:completionHint

用于为弹出的下拉菜单指定提示标题

android:completionThreshold

用于指定用户至少输入几个字符才会显示下拉菜单

android:dropDownHeight

用户指定下拉菜单的高度

android:dropDownWidth

用户指定下拉菜单的宽度

android:dropDownHorizontalOffset

指定下拉菜单与文本之间的水平偏移,默认与文本框左对齐

android:dropDownVerticalOffset

指定下拉菜单与文本之间的垂直偏移,默认紧跟文本框

11. 进度条ProgressBar:

ProgressBar用于显示某个时刻操作完成的进度控件,该控件应随时间、操作完成度而实时变化,从而达到提醒用户任务进度的目的,可以通过在XML布局文件中添加<ProgressBar>标记来使用。
进度条具有多种风格,可以通过设置style属性指定,属性值包括Horizontal、Inverse、Large、LargeInverse、Small、SmallInverse等。常用属性值有:

STYLE属性

描述

?android:attr/progressBarStyleHorizontal

细水平长度进度条

?android:attr/progressBarStyleLarge

大圆形进度条

?android:attr/progressBarStyleSmall

小圆形进度条

@android:style/Widget.ProgressBar.Large

大跳跃、旋转画面进度条

@android:style/Widget.ProgressBar.Small

小跳跃、旋转画面进度条

@android:style/Widget.ProgressBar.Horizontal

粗水平长度进度条

其他属性还有:

属性

描述

android:animationResolution

以毫秒为单位的动画帧之间时间间隔,必须为整数值

android:max

设置进度条的最大值

android:progress

设置进度条已完成的进度值

android:secondaryProgress

定义二次进度值

android:progressDrawable

设置进度条的规道对应的Drawable资源

android:indeterminate

设置是否精确显示进度

android:indeterminateDrawable

设置不显示进度的进度条的Drawable资源

android:indeterminateDuration

设置不精确显示进度的持续时间

ProgressBar提供了如下方法来动态控制进度条:

方法

描述

setProgress(int)

设置进度条的百分比

incrementProgressBy(int)

设置进度条的进度变化,int表示变化量,正数表示增加,负数表示减少

setVisibility(int)

设置进度条是否可见

isIndeterminate()

判断进度条是否在不确定模式下

setIndeterminate(boolean)

设置进度条是否为不确定模式

12. 拖动条SeekBar:

SeekBar允许用户拖动滑块来改变值,通常用于实现对某种数值的调节,如屏幕亮度、音量大小等。在屏幕中添加拖动条控件,可以通过在XML布局文件中添加<SeekBar>标记来实现。SeekBar的外观可以使用android:thumb属性,属性值为drawable对象,使用拖动条需要为其添加OnSeekBarChangeListener监听器。

13. 星级评分条RatingBar:

星级评分条是通过星形图案表示进度,通常表示对某种事务的支持度或某种服务的满意度等。在屏幕中添加星形评分条控件,通过在XML布局文件中添加<RatingBar>标记来实现。RatingBar支持的属性有:

属性

描述

android:isIndicator

用于指定该星级评分条是否允许用户改变,值为true时不允许改变

android:numStars

用于指定该星级评分条总共有多少颗星

android:rating

用于指定该星级评分条默认的星级

android:stepSize

用于指定每次最少需要改变多少个星级,默认为0.5个

星级评分条还提供了几种常用的方法:

方法

描述

getRating(int)

用于获取等级,表示选中了几颗星

getStepSize(int)

用于获取每次最少要改变多少颗星

getProgress(int)

用于获取进度,为getRating()与getStepSize()值的乘积

setRating(float rating)

设置等级,即星形的数量

setStepSize(float stepSize)

设置每次最少要改变多少颗星

setNumStars(int numStars)

设置显示的星形的数量

setMax(int max)

设置评分等级的范围,从0到max

在使用星形评分条控件时,需要为其添加setOnRatingBarChangeListener监听器。

14.日期选择器DatePicker:

DatePicker用来让用户选择日期,通过在XML布局文件中添加<DatePicker>标记来使用。为了在程序中获取到用户选择的日期,需要为DatePicker控件添加事件监听器OnDateChanged Listenter,主要代码为:
DatePicker date=(DatePicker)findViewById(R.id.datePicker);
date.init(year,month,day,new dateOnDateChangedListener());
......
class dateOnDateChangedListener implements OnDateChangedListener{
 @Override
 public void onDateChanged(DatePicker view,,int year,int monthOfYear,int dayOfMonth){
  MainActivity.this.year=year;
  MainActivity.this.month=monthOfYear;
  MainActivity.this.day=dayOfMonth;
 }
}

15.时间选择器TimePicker:

TimePicker用来让用户选择时间,通过在XML布局文件中添加<TimePicker>标记来使用。使用TimePicker要添加事件监听器OnTimeChangedListener,主要代码为:
TimePicker time=(TimePicker)findViewById(R.id.timePicker);
time.setOnTimeChangedListener(new timeOnTimeChangedListener());
......
class timeOnTimeChangedListener implements OnTimeChangedListener{
 @Override
 public void onTimeChanged(TimePicker view,int hourOfDay,int  minute){
  MainActivity.this.hour=hourOfDay;
  MainActivity.this.minute=minute;
 }
}

16.计时器Chronometer:

Chronometer继承于TextView,可以显示从某个起始时间开始一共过去了多长时间,以文本形式显示内容。通过在XML布局文件中添加<Chronometer>标记来使用计时器,使用时常常使用的方法有:

方法

描述

setBase(long base)

设置计时器计时的基准(开始)时间

setFormat(String format)

设置用于格式化显示格式的字符串,如MM:SS或H:MM:SS

start()

开始计时,仅影响显示的视图,不影响基准时间

stop()

停止计时,只影响视图显示,不影响基准时间

setOnChronometerTickListener
(OnChronometerTickListener listener)

设置计时器变化时调用的监听器

17.图片视图ImageView:

ImageView继承于View控件,可显示图像资源。通过在XML布局文件中添加<ImageView>标记加入图片视图,其支持的属性包括:

属性

描述

android:adjustViewBounds

设置是否保持宽高比,需要与maxWidth、maxHeight一起使用

android:baseline

在视图中的偏移

android:baselineAlignBottom

如果值为true,图像的视图将基线对齐基于其底部边缘

android:cropToPadding

如果设置为true,图像将被剪裁以适合填充

android:maxHeight

设置控件的最大高度

android:maxWidth

设置控件的最大宽度

android:scaleType

设置图片的缩放或移动的方式以适应控件的大小

android:src

设置控件的Drawable资源id

android:tint

设置图像着色的颜色

要使用ImageView显示图片,通常先将要显示的图片放置在res/drawable目录下。如果要设置图片固定大小,又要保持图片宽高比,需要设置setAdjustViewBounds为true,设置maxWidth、maxHeight,并设置layout_width和layout_height为wrap_content。ImageButton就是由ImageView派生的。
ImageView常用的方法有:

方法

描述

setAdjustViewBounds(boolean ab)

设置是否保持高宽比,需要结合maxHeight和maxWidth使用

getDrawable()

获取Drawable对象,获取成功则返回Drawable对象,否则为null

getScaleType()

获取视图的填充方式

setAlpha(int alpha)

设置透明度,范围0~255,0为完全透明,255为不透明

setMaxHeight(int h)

设置控件的最大高度

setMaxWidth(int w)

设置控件的最大宽度

setColorFilter(int color)

设置颜色过滤,需要制定颜色过滤矩阵

setImageBitmap(Bitmap bm)

设置位图

setImageDrawable(Drawable dr)

设置位图

setImageResource(int rid)

设置图片资源库

setImageURI(Uri uri)

设置图片地址,图片地址使用URI指定

ImageView的android:scaleType属性可以指定的属性值有:

属性值

描述

matrix

用矩阵来绘图

fitXY

拉伸图片以填充View宽高

fitStart

按比例拉伸图片,图片拉伸后的高度为View的高度,且显示在View的左边

fitCenter

按比例拉伸图片,图片拉伸后的高度为View的高度,且显示在View的中间

fitEnd

按比例拉伸图片,图片拉伸后的高度为View的高度,且显示在View的右边

center

按原图大小显示图片,当图片宽高大于View的宽高时,截取图片中间部分显示

centerCrop

按比例放大原图,直至等于View某边的宽高

centerInside

当原图宽高等于View的宽高时,按原图大小居中显示,否则将原图缩放至View的宽高居中显示

为了控制ImageView所显示的图片,提供了setImageBitmap()、setImageDrawable()、setImageResource()、setImageURI方法获取要显示的图片资源,也可以通过XML文件中<ImageView>的android:src属性指定。

18.滚动视图ScrollView:

当手机界面上的元素超过元素最大的高度时,需要一种滚动浏览的控件。ScrollView只支持垂直方向的滚动,不支持水平方向的滚动,水平滚动使用HorizontalScrollView。通过在XML布局文件中添加<ScrollView>或<HorizontalScrollView>分别使用垂直滚动视图或水平滚动视图,其中的scrollbarThumbVertical或scrollbarThumbHorizontal分别表示垂直方向或水平方向的滚动条设置的图片,然后在其中添加<ImageView>图片控件。常用方法有:

方法

描述

dispatchKeyEvent(KeyEvent event)

将参数指定的键盘事件分发给当前焦点的视图

arrowScroll(int direction)

该方法响应单击上下文箭头时对滚动条滚动的处理

addView(View child)

添加子视图

computeScroll()

更新子视图的值(mScrollX和mScrollY)

onTouchEvent(MotionEvent ev)

该方法用于运动事件,该运动事件是在处理触摸时产生

setOnTouchListener()

设置ImageButton单击事件监听

setColorFilter()

设置颜色过滤,需要制定颜色过滤矩阵

executeKeyEvent(KeyEvent event)

当接收到键盘事件时,此函数执行滚动操作

fullScroll(int direction)

将视图滚动到direction指定的方向

onInterceptTouchEvent(MotionEvent me)

此方法用于拦截用户的触屏事件

旧版本曾有Gallery画廊控件,新版本建议使用HorizontalScrollView或ViewPager来替代。

19.列表视图ListView:

ListView以垂直方法显示列表项,即将元素按照条目的方式自上而下列出,通常每一列只有一个元素。通过在XML布局文件中添加<ListView>标记来实现创建列表视图。ListView的属性有:

属性

描述

android:choiceMode

设置是否允许多选

android:drawSelectorOnTop

设置是否允许选中的项显示在上方

android:listSelector

为突出显示被选中项,设置在其上绘制的Draw资源

android:divider

设置列表项之间的分隔条

android:dividerHeight

设置分隔条的高度

android:entries

设置分隔条的信息(数组资源)

android:footerDividersEnable

设置是否在footer项前绘制分隔条

android:headerDividersEnable

设置是否在header项后绘制分隔条

属性中有类似与spinner的entries属性,用于指定列表项数组。如果没有指定entries,就需要在Java代码中设置Adapter来指定所需要显示的列表项。 ListView指定的外观形式通常有:

simple_list_item_1

每个列表项都是一个普通文本

simple_list_item_2

每个列表项都是一个普通文本,字体略大

simple_list_item_checked

每个列表项都有一个选中的列表项

simple_list_item_multiple_choice

每个列表项都是带有复选框的文本

simple_list_item_single_choice

每个列表项都是带单选按钮的文本

实现一个列表视图必须具备ListView、适配器、子元素3个条件,其中适配器用于存储列表视图的子元素,用户可通过滑动滚动条来显示界面之外的元素。ListView常用的方法有:

方法

描述

getCheckedItemPosition()

返回当前被选中的子元素的位置

addFooterView(View view)

给视图添加脚注,通常位于列表视图底部

getMaxScrollAmount()

返回列表视图的最大滚动数量

getDividerHeight()

获取子元素之间分隔符的宽度

setStretchMode(int)

设置缩放模式

onKeyMultiple(...)

多次按键时的处理方法

setSelection(int p)

设置当前被选中的列表视图的子元素

onKeyUp(int keyCode,KeyEvent event)

释放按键时的处理方法

onKeyDown(int keyCode,KeyEvent event)

按键时的处理方法

isItemChecked(int position)

判断指定位置position元素是否被选中

addHeaderView(int)

给视图添加头注,通常位于列表视图的顶部

dispatchPopulateAccessibilityEvent(event)

获取分派一个被构建时辅助视图的子项目事件

getChoiceMode()

返回当前的选择模式

如果程序窗口仅需要显示一个列表,可以使用Activity继承ListActivity来实现,继承了ListActivity的类不需要调用setContentView()方法来显示界面,可以直接为其设置适配器,从而显示一个列表。

20.网格视图GridView:

GridView是按行、列方式来显示多个组件,通常用于显示图片或图标等。使用时通常在XML布局文件中加入<GridView>标记来实现。
GridView的属性包括:

属性

描述

android:columnWidth

设置网格列宽度

android:horizontalSpacing

设置列与列之间的距离

android:numColumns

设置列数

android:stretchMode

设置拉伸模式

android:verticalSpacing

设置行与行之间的距离

一个网格视图通常需要一个列表适配器ListAdapter,该适配器包含网格视图的子元素组件。
网格视图能够以数据网格形式形式子元素,并能对这些元素进行分页、自定义样式等操作,常用的方法有:

方法

描述

setGravity(int gravity)

设置此组件中的内容在组件中的位置

setColumnWidth(int)

该方法设置网格视图的宽度

getAdapter()

获取该视图的适配器

setAdapter(ListAdapter adapter)

设置网格视图对应的适配器

setStretchMode(int)

用于设置缩放模式

onKeyMultiple(...)

多次按键时的处理方法

setSelection(int p)

设置当前被选中的网格视图的子元素

onKeyUp(int keyCode,KeyEvent event)

释放按键时的处理方法

onKeyDown(int keyCode,KeyEvent event)

按键时的处理方法

setHorizontalSpacing(int c)

设置网格视图同一行子元素之间的水平间距

setNumberColumn(int)

设置网格视图包含的子元素的列数

setHorizontalSpacing()

获取网格视图同一行子元素之间的水平间距

getNumColumns()

获取网格视图包含的子元素的列数

getSelection()

获取当前被选中的网格视图的子元素

21.图像切换器ImageSwitcher:

ImageSwitcher用于实现图片的切换,使用时必须使用ViewSwitcher.ViewFactory接口,并通过makeView()方法来创建用于显示图片的ImageView,使用setImageResource()方法来指定要在ImageSwitcher中显示的图片资源。

22.选项卡TabHost:

选中卡主要由TabHost、TabWidget和FrameLayout三个控件组成,用于实现一个多标签界面,通过它可将一个复杂的对话框分割成若干标签页,实现对信息的分类显示和管理。
实现选项卡首先要在XML布局文件中添加需要的TabHost、TabWidget和FrameLayout控件,并编写各标签页要显示内容对应的XML布局文件,然后在Activity中获取并初始化TabHost控件,为TabHost对象添加标签页。

菜单:

1.选项菜单OptionMenu:

Android手机上有个Menu按钮,当按下时会在屏幕底部弹出一个菜单,此菜单就是选项菜单。Android开放了选项菜单的应用接口并屏蔽其实现的复杂性。
一个Menu对象代表了一个菜单,Menu对象中可以添加菜单项MenuItem,也可以添加子菜单SubMenu。
向Menu添加菜单项或子菜单的方法有:
add(int titleRes)
add(CharSequence title)
add(int groupId,int itemId,int order,int titleRes)
add(int groupId,int itemId,int order,CharSequence title)
其中,titleRes为String对象的标识符;title为菜单项显示的文本内容;groupId为菜单项所在的组,通过分组可以对菜单项或子菜单进行批量操作,不需要分组传入none;order为菜单项的顺序,可以传入none;itemId为当前添加的菜单项或子菜单的id,可以传入none。add()方法的返回值为菜单项MenuItem或子菜单SubMenu。
其他常用的菜单操作方法有:

方法

描述

void clear()

移除菜单中的所有子项

void close()

关闭菜单

MenuItem findItem(int id)

返回指定id的MenuItem

void removeGroup(int groupId)

从菜单中移除一组

void removeItem(int id)

移除指定id的MenuItem

int size()

返回Menu中菜单项的个数

1)选项菜单:
对于携带图标的选项菜单,每次最多只能显示6个菜单选项,如果超过6个,系统会显示前5个菜单项,最后一个菜单项是扩展菜单项,单击扩展菜单项会弹出其余的菜单选项。
创建选项菜单需要覆盖Activity的onCreateOptionsMenu()方法,调用Menu的add()方法添加菜单项MenuItem,当菜单项被选择时覆盖Activity的onOptionsItemSelected()方法来响应事件。常用的回调方法有:

方法

描述

onCreateOptionsMenu(Menu menu)

初始化选项菜单,该方法只在第一次显示时被调用

onPrepareOptionsMenu(Menu menu)

为程序准备选项菜单,每次显示前都会调用此方法

onOptionsItemSelected(MenuItem item)

选项菜单中某个选项被选中时调用该方法,默认返回false

onOptionsMenuClosed(Menu menu)

选项菜单关闭时(按下返回键或选中某个项)调用该方法,

还可以为每个菜单项MenuItem对象添加OnMenuItemClickListener监听器来处理菜单项中的事件。但当onMenuItemClick()方法返回true时,onOptionsItemSelected()和onMenuItemSelected()方法将失效。
目前多数手机取消了实体的触摸按键,改为虚拟按键,菜单通常会显示到标题栏ActionBar中,只能通过单击标题栏中右侧的"..."按钮显示菜单。

2)子菜单:
Android系统中,子菜单采用弹出方式,即单击带子菜单的菜单项后,父菜单会关闭,只在屏幕上显示子菜单。子菜单SubMenu继承自Menu,常用的方法有:

方法

描述

setHeaderIcon(Drawable icon)

设置子菜单的标题图标

setHeaderIcon(int iconRes)

setHeaderTitle(int titleRes)

设置子菜单的标题

setHeaderTitle(CharSequence title)

setIcon(Drawable icon)

设置子菜单在父菜单中显示的图标

setIcon(int iconRes)

setHeaderView(View view)

指定View对象作为子菜单图标

子菜单上不能显示图像,但可以带复选框和单选按钮,子菜单项下不能再建立子菜单。

2.上下文菜单ContextMenu:

上下文菜单可以与任意View对象关联,也包括菜单头和菜单项。要创建上下文菜单,需要覆盖Activity类的onCreateContextMenu()方法,调用Menu的add()方法添加菜单项,使用setHeaderTitle()和setHeaderIcon()方法设置上下文菜单头的标题和图像,重写onContextItemSelected()方法响应菜单单击事件,在Activity的onCreate()方法中调用registerForContextMenu()方法为视图注册上下文菜单。
上下文菜单是android.view.Menu的子类,提供了用于创建和添加菜单的接口,常用的方法有:

方法

描述

setHeaderIcon(int iconRes)

设置上下文菜单的图标

setHeaderIcon(Drawable icon)

设置上下文菜单的图标

setHeaderTitle(CharSequence title)

设置上下文菜单的标题

setHeaderTitle(int titleRec)

设置上下文菜单的标题

add(int groupId,int itemId,int order,CharSequence title)

添加子菜单

上下文菜单的菜单项不能带图像,但可以带复选框或选项按钮,不支持嵌套子菜单。

手机状态栏消息提示Notification:

手机的状态栏Status Bar位于手机最上层,通常用于显示电池电量、信号强度等,也可以显示其他信息。Android系统中,用手指按下状态栏并向下拉,就可以打开状态栏查看系统的提示消息,在应用程序中可以开发自己的Notification,并将其添加到系统的状态栏中。

导航栏ActionBar:

ActionBar是导航栏功能控件,主要功能是标识用户当前操作页面的设置,并且提供额外的操作按钮方便用户操作和界面导航。
添加ActionButton可以通过配置文件添加,也可以通过代码动态添加。ActionBar的图标和主题默认会显示应用的图标和名称,可以通过修改AndroidManifest.xml中每个Activity的属性达到自定义每个Activity的图标和标题的目的,即label、logo值。
使用导航栏要通过getActionBar()获取应用的ActionBar对象,然后通过调用ActionBar的show()方法显示,通过调用hide()方法将其隐藏。也可以通过指定主题样式为Theme.Holo. NoActionBar。

Toolbar工具栏:
Toolbar是新版的导航组件,可以放置到界面的任意位置,并预留了许多可定制修改的空间,如可以设置导航栏图标、支持设置标题和子标题、支持添加一个或多个自定义组件、支持Action Menu等。
Toolbar继承自ViewGroup,主要方法有:

方法

描述

setTitle(int resId)

设置标题

setSubtitle(int resId)

设置子标题

setTitleTextColor(int color)

设置标题字体颜色

setSubtitleTextColor(int color)

设置子标题字体颜色

setNavigationIcon(Drawable icon)

设置导航栏的图标

setLogo(Drawable drawable)

设置Toolbar的Logo图标

要使用Toolbar,首先要在styles.xml文件中对<style>元素进行设置使用NoActionBar主题去除ActionBar提供的操作栏:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
然后在Activity对应的布局文件中添加Toolbar组件:
<android.support.v7.widget.Toobar android:id="@+id/myToolbar"
android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"/>
接下来在Activity的onCreate()方法中使用setSupportActionBar()方法将Toolbar设置为Activity的操作栏,语法为:
Toolbar toolbar=(Toolbar)findViewById(R.id.myToolbar);
setSupportActionBar(toolbar);


Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659