安卓学习基础——Android常用基本控件(一)

时间:2021-09-09 00:40:29


文本控件(文本框与编辑框)


TextView(文本框)

TextView继承自View类。它的功能是向用户显示文本内容,同时可选择性的让用户编辑文本。从功能上来讲,一个TextView就是一个文本编辑器,只不过其本身被设置为不允许编辑,其子类EditText被设置为允许用户对内容进行编辑。
TextView的属性:
android:autoLink :设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web /email/phone/map/all)
android:autoText :如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。
android:bufferType : 指定getText()方式取得的文本类别。选项editable 类似于StringBuilder :可追加字符,也就是说getText后可调用append方法设置文本内容。
spannable :则可在给定的字符区域使用样式,参见这里1、这里2。
android:capitalize :设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见EditView此属性说明。
android:cursorVisible:设定光标为显示/隐藏,默认显示。
android:digits:设置允许输入哪些字符。如“1234567890.+-*/% ()”
android:drawableBottom:在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。
android:drawableLeft:在text的左边输出一个drawable,如图片。
android:drawablePadding:设置text与drawable(图片)的间隔,与drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。
android:drawableRight:在text的右边输出一个drawable。
android:drawableTop:在text的正上方输出一个drawable。
android:editable:设置是否可编辑。
android:editorExtras:设置文本的额外的输入数据。
android:ellipsize:设置当文字过长时,该控件该如何显示。有如下值设置:”start”—?省略号显示在开头;”end” ——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
android:freezesText:设置保存文本的内容以及光标的位置。
android:gravity:设置文本位置,如设置成“center”,文本将居中显示。
android:hintText:为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在 EditView中使用,但是这里也可以用。
android:imeOptions:附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号。这个在EditView中再详细说明,此处无用。
android:imeActionId:设置IME动作ID。
android:imeActionLabel:设置IME动作标签。
android:includeFontPadding:设置文本是否包含顶部和底部额外空白,默认为true。
android:inputMethod:为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到
android:inputType:设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView中再详细说明,这里无效果。
android:linksClickable:设置链接是否点击连接,即使设置了autoLink。
android:marqueeRepeatLimit:在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为 marquee_forever时表示无限次。
android:ems:设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度
android:maxEms:设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:minEms:设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:maxLength:限制显示的文本长度,超出部分不显示。
android:lines:设置文本的行数,设置两行就显示两行,即使第二行没有数据。
android:maxLines:设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
android:minLines:设置文本的最小行数,与lines类似。
android:lineSpacingExtra:设置行间距。
android:lineSpacingMultiplier:设置行间距的倍数。如”1.2”
android:numeric:如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。
android:password:以小点”.”显示文本
android:phoneNumber:设置为电话号码的输入方式。
android:privateImeOptions:设置输入法选项,此处无用,在EditText将进一步讨论。
android:scrollHorizontally:设置文本超出TextView的宽度的情况下,是否出现横拉条。
android:selectAllOnFocus:如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。 TextView中设置后无效果。
android:shadowColor:指定文本阴影的颜色,需要与shadowRadius一起使用。
android:shadowDx:设置阴影横向坐标开始位置。
android:shadowDy:设置阴影纵向坐标开始位置。
android:shadowRadius:设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
android:singleLine:设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine "
android:singleLine="true" android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行
android:text:设置显示文本.
android:textAppearance:设置文字外观。如 “?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
android:textColor:设置文本颜色
android:textColorHighlight:被选中文字的底色,默认为蓝色
android:textColorHint:设置提示信息文字的颜色,默认为灰色。与hint一起使用。
android:textColorLink:文字链接的颜色.
android:textScaleX:设置文字之间间隔,默认为1.0f。
android:textSize:设置文字大小,推荐度量单位”sp”,如”15sp”
android:textStyle:设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
android:typeface:设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
android:height:设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight:设置文本区域的最大高度
android:minHeight:设置文本区域的最小高度
android:width:设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width 的区别看这里。
android:maxWidth:设置文本区域的最大宽度
android:minWidth:设置文本区域的最小宽度


EditText(编辑框)

EditText是TextView的子类,用于在屏幕上显示文本输入框,可以单行,多行,也可以输入指定格式的文本。


按钮

普通按钮

普遍按钮触发事件有两种方法,一种是在Ativity的onCreat()方法中完成,如下:
import...
Button login=(Button)findViewById(R.id.login);
login.setOnclickListener(new OnClickListener(){
@override
public void onClick(View v){
//要执行的操作代码
}
});
另一种是在Activity中编写一个包含View类型参数的方法,并且将要触发的动作代码放在该方法中,然后再布局文件中,通过android:onClick属性指定对应的方法名实现。

图片按钮

与普通按钮用法基本相同,但是使用<ImageButton>标记定义,并且可为其指定android:src属性,用于设置要显示的图片。
在默认情况下,为图片按钮设置android:src后,该图片按钮将带一个灰色的背景,不是很美观,为了去除黑色的背景,可以将其背景设置为透明,不过这样该图片按钮将不再有鼠标单击效果。

单选按钮和复选框


单选按钮

1.单选按钮一般放置在一个RadioGroup中,例如:
<RadioGroup 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <RadioButton 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="male"
            />
        <RadioButton 
            android:layout_width="wrap_content"
           android:layout_height="wrap_content"
            android:text="famale"
            />
   </RadioGroup>
2.获取按钮的值一般有两种方法:
在改变单选按钮组的值时获取:
首先要获取单选按钮组然后为其添加OnCheckedChangeListener,并在其onCheckedChanged()方法中根据参数checkedId来获取被选中的单选按钮,并通过其getText()方法获取该单选按钮对应的值。
在单击其他按钮时获取:
为起塔按钮添加监听器,当单击其它按钮时遍历所有的单选框,并检验那个被选中,从而得到选中的单选框的值。
//获得单选按钮组对象
myRadioGroup=(RadioGroup)findViewById(R.id.myRadioGroup);
//获得按钮对象
myButton=(Button)findViewById(R.id.myButton);
myButton.setOnClickListener(new OnClickListener(){


@Override
public void onClick(View arg0) {
// 遍历所有单选按钮
for(int i=0;i<myRadioGroup.getChildCount();i++){
RadioButton r=(RadioButton)myRadioGroup.getChildAt(i);
if(r.isChecked()==true){
Log.i("单选按钮","性别:"+r.getText());
break;
}
}

}

});

复选框

复选框:CheckBox。是Button的子类。

图像视图(ImageView)


图像视图用于在屏幕中显示任何Drawable对象,通常用来显示图片。

列表选择框(Spinner)

相当于网页中常见的下拉列表框,通常用于提供一系列可选择的列表项供用户进行选择,从而方便用户。
<Spinner
   
android:id="@+id/planets_spinner"
   
android:layout_width="fill_parent"
   
android:layout_height="wrap_content" android:entries="@array/数组名称" />
其中entries属性用来指定列表所要显示的数值,可以在value文件中编写一个array.xml文件。如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<string-array name="planets_array">
       
<item>Mercury</item>
       
<item>Venus</item>
       
<item>Earth</item>
       
<item>Mars</item>
       
<item>Jupiter</item>
       
<item>Saturn</item>
       
<item>Uranus</item>
       
<item>Neptune</item>
   
</string-array>
</resources>
在屏幕上添加完列表选择框后,可以使用列表选择框的getSelectedItem()方法获取列表选项中选中的值。如下:
Spinner spinner=(Spinner)findViewById(R.id.spinner1);
spinner.getSelectedItem();
如果需要在用户选择不同的列表项后,执行相应的处理,则可以为该列表选择框添加OnItemSelectedListener事件监听器。如下:
spinner.setOnItemSeletecListener(new OnItemSelectedListener(){
@override
public void onItemSelected(AdapterView<?>parent,View arg1,int pos,long id){
String resule=parent.getItemAtPosition(pos).toString();
log.i("Spinner示例",resule);
}
@Override
public void onNothingSelected(AdapterView<?> arg0){
}
});

列表视图(ListView)

android中常用的一种组件,它以垂直列表的形式列出需要显示的列表项。例如显示系统设置项或者功能列表等。在安卓中,可以使用两种方法向屏幕中添加列表视图:一种是直接使用ListView组件创建;另一种是让Activity继承ListActivity实现。
1.直接使用ListView组件创建列表视图,这也有两种方式:一种是通过在xml文件中使用<ListView>标记添加;另一种实在Java文件中,通过new关键字创建。
ListView常见属性如下:

 
 

android:choiceMode

规定此ListView所使用的选择模式。缺省状态下,list没有选择模式。

属性值必须设置为下列常量之一: none,值为0,表示无选择模式;

singleChoice,值为1,表示最多可以有一项被选中;

multipleChoice,值为2,表示可以多项被选中。

可参看全局属性资源符号choiceMode

android:divider

规定List项目之间用某个图形或颜色来分隔。可以用"@[+][package:]type:name"或者"?[package:][type:]name"(主题属性)的形式来指向某个已有资源;也可以用"#rgb""#argb""#rrggbb"或者"#aarrggbb"的格式来表示某个颜色。

可参看全局属性资源符号divider

android:dividerHeight

分隔符的高度。若没有指明高度,则用此分隔符固有的高度。必须为带单位的浮点数,如"14.5sp"。可用的单位如pxpixel像素),dpdensity-independent
pixels与密集度无关的像素)spscaled pixels based on preferred font
size
 基于字体大小的固定比例的像素),in (inches英寸), mm (millimeters毫米)

可以用"@[package:]type:name

"或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。

可参看全局属性资源符号dividerHeight

android:entries

引用一个将使用在此ListView里的数组。若数组是固定的,使用此属性将比在程序中写入更为简单。

必须以"@[+][package:]type:name"或者 "?[package:][type:]name"的形式来指向某个资源。

可参看全局属性资源符号entries

android:footerDividersEnabled

设成flase时,此ListView将不会在页脚视图前画分隔符。此属性缺省值为true

属性值必须设置为truefalse

可以用"@[package:]type:name

"或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。

可参看全局属性资源符号footerDividersEnabled

android:headerDividersEnabled

设成flase时,此ListView将不会在页眉视图后画分隔符。此属性缺省值为true

属性值必须设置为truefalse

可以用"@[package:]type:name

"或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。

可参看全局属性资源符号headerDividersEnabled



2.让Activity继承ListActivity实现
如果程序中只需要显示一个列表,就可以直接让Activity继承ListView来实现。继承了ListActivity的类中无需调用setContentView()方法来显示页面,而是可以直接为其设置适配器,从而显示一个列表。

日期、时间拾取器

日期拾取器(DatePicker),时间拾取器(TimePicker)能让用户选择日期和时间。它们对应的监听器分别为:OnDateChangedListener和OnTimeChangedListener。

计时器(Chronometer)

计时器组件可以显示从某个时间开始,一共过去了多长时间的文本,它继承自TextView,所以它以文本的形式显示内容。使用该组件也比较简单,通常只需要使用以下5个方法:
1.setBase():用于设置计时器的起始时间;
2.setFormat():用于设置显示时间的格式;
3.start():用于指定开始计时;
4.stop():用于指定停止计时;
5.setOnChronometerTickListener():用于为计时器绑定监听事件,当计时器改变时出发该监听器。