天天看点

UI组件——TextView

1 TextView直接继承与View。

对每个控件都要关注:界面+ 事件。

界面是如何呈现的?

事件是如何实现的?

对每个控件做练习,并模仿商业app实现。

从最简单和最常见的控件来

约定:

特殊组件,详细讲事件和原理。

普通组件,简单讲解用法。

2 TextView(文本框)

表1 TextView支持的XML属性以及相关方法 参考资料: http://www.jb51.net/article/37535.htm http://www.cnblogs.com/over140/archive/2010/10/05/1844464.html http://www.cnblogs.com/over140/tag/Android%20API%20%E4%B8%AD%E6%96%87/ 《疯狂Android(第3版本)》

TextView中XML属性适用于TextView、Button和EditText。

XML属性 相关方法 说明
android:autoLink setAutoLinkMask(int) 是否符合指定格式的文本转换为可单击的超链接形式。
android:linksClickable setLinksClickable(boolean) 设置链接是否点击连接,即使设置了autoLink。
android:autoText setKeyListener(KeyListener) 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web /email/phone/map/all)
android:capitalize setKeyListener(KeyListener)

是否将用户输入的文本转换为大写字母。

该属性支持如下选项:

(1)none:不转换。

(2)sentences:每个句子的首字母大写。

(3)worlds:每个单词的首字母大写。

(4)characters:每个字母大写。

EditView中使用。

android:cursorVisible setCursorVisible(boolean) 设置该文本框的光标是否可见
android:drawableTop setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable,Drawable,Drawable) 在文本框内文本的顶端出绘制指定图像。
android:drawableBottom setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable,Drawable,Drawable) 在文本框内文本的底端出绘制指定图像。android:drawableBottom在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。
android:drawableLeft setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable,Drawable,Drawable) 在文本框内文本的左边出绘制指定图像。
android:drawableRight setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable,Drawable,Drawable) 在文本框内文本的右边出绘制指定图像。
android:drawableStart 在文本框内文本的开始处出绘制指定图像。
android:drawableBottom 在文本框内文本的结尾处出绘制指定图像。
android:drawablePadding setCompoundDrawablePadding(int) android:drawablePadding设置text与drawable(图片)的间隔,与drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。
android:ellipsize

设置当文字过长时,该控件该如何显示。

有如下值设置:

none:不做任何处理。

Start:省略号显示在开头;

end:省略号显示在结尾;

middle:省略号显示在中间;

marquee:以跑马灯的方式显示(动画横向移动)

android:marqueeRepeatLimit setMarqueeRepeatLimit(int) 设置marquee动画重复的次数。在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为 marquee_forever时表示无限次。
android:editable 设置该文本是否允许编辑。
android:ems setEms(int) 设置该组件的宽度,以em为单位。这里测试为一个汉字字符宽度
android:maxEms setMaxEms(int) 设置该文本框的最大宽度,以em为单位。
android:minEms setMinEms(int) 设置该文本框的最小宽度,以em为单位。
android:height setHeight(int) 设置该文本框的高度,以pixel为单位。
android:maxHeight setMaxHeight(int) 设置该文本框的最大高度,以pixel为单位。
android:minHeight setMinHeight(int) 设置该文本框的最小高度,以pixel为单位。
android:width setWidth(int) 设置该文本框的宽度,以pixel为单位。
android:maxWidth setMaxWidth(int) 设置该文本框的最大宽度,以pixel为单位。
android:minWidth setMinWidth(int) 设置该文本框的最小宽度,以pixel为单位。
android:lines setLines(int) 设置该文本框默认占几行。设置两行就显示两行,即使第二行没有数据。
android:maxLines setMaxLines(int) 设置该文本框最多占几行。超出部分不显示。
android:minLines setMinLines(int) 设置该文本框最少占几行。
android:singleLine setSingleLine(boolean) 设置该文本框是否为单行显示模式。如果设置true,文本不会换行。
android:lineSpacingExtra setLineSpacing(float,float) 设置两行文本之间的额外间距。与属性android:lineSpacingMultiplier结合使用。
android:lineSpacingMultiplier setLineSpacing(float,float) 设置两行文本之间的间距倍数。 如”1.2”。每行文本为高度*该属性值 + android:lineSpacingExtra属性值。
android:textAppearance

设置文本框文本的颜色、字体、大小等样式。

如 “?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。

可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/

textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse

android:gravity setGravity(int) 设置文本框中文本的对齐方式。
android:text setText(ChartSeqence) 设置文本框中文本.
android:textAllCaps setTextAllCaps(boolean) 设置是否将文本框的所有字母显示为大写字母。
android:textColor setTextColor() 设置文本框中文本的颜色。
android:textSize setTextSize(float) 设置文本框中文本的字体大小,推荐度量单位”sp”,如”15sp”。
android:textColorHighlight setHighlightColor() 设置文本框中文本被选中时的颜色。默认为蓝色
android:textColorLink setLinkTextColor() 设置文本框中文字链接的颜色.
android:textScaleX setTextScaleX(float) 设置文本框中文字在水平方向上的缩放因子。默认为1.0f。
android:textStyle setTypeface(Typeface) 设置文本框中文本的字体风格。[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
android:typeface setTypeface(Typeface) 设置文本框中文本的字体。必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
android:textIsSelectable isTextIsSelectable() 设置文本框不能编辑时,文本框内的文字是否可以选中。
android:hint setHint(int) 设置当文本框内容为空时,文本框内默认提示的提示文本。EditText中输入内容为空时,设置提示信息。
android:textColorHint setHintTextColor 设置文本框中提示文本的颜色。默认为灰色。与hint一起使用。
android:maxLength 限制显示的文本长度,超出部分不显示。
android:shadowColor setShadowLayer(float,float,float,int) 设置文本框内文本的阴影颜色。需要与shadowRadius一起使用。
android:shadowDx setShadowLayer(float,float,float,int) 设置文本框内文本的阴影在水平方向(横向坐标)的偏移。
android:shadowDy setShadowLayer(float,float,float,int) 设置文本框内文本的阴影在垂直方向(纵向坐标)的偏移。
shadowRadius setShadowLayer(float,float,float,int) 设置文本框内文本的阴影的模糊程序。该值越大,阴影越模糊。android:shadowRadius设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
android:digits设置允许输入哪些字符。如“1234567890.+-*/% ()”
android:numeric setKeyListener(KeyListener)

设置文本框关联的数值输入法。

该属性支持如下属性值:

integer:执行关联整数输入法

signed:允许输入符号的数值输入法。

Decimal:允许输入小数点的数值输入法。

android:digits setKeyListener(KeyListener) 如果该属性设置为true,该文本框对应一个数字输入法,并且只能接受那些合法字符。
android:password setTransformationMethod(TransformationMethod) 设置文本框是一个密码框,以小点”.”显示文本
android:phoneNumber setKeyListener(KeyListener) 设置文本框只能接受电话号码
android:imeOptions setImeOptions(int)

当为文本框关联输入法时,为输入法指定额外的选项。

附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号。在EditView使用。

android:imeActionId setImeActionLabel(CharSequebnce,int) 当输入框关联输入法时,为输入法提供EditorInfo.actionId值。即设置IME动作ID。在EditView使用。
android:imeActionLabel setImeActionLabel(CharSequebnce,int) 当输入框关联输入法时,为输入法提供EditorInfo.actionLabel值。设置IME动作标签。在EditView使用。
android:includeFontPadding setIncludeFontPadding(boolean) 设置是否为字体保留足够的空间。即设置文本是否包含顶部和底部额外空白,默认为true。
android:inputMethod setKeyListener(KeyListener) 为文本框指定输入法,需要全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到。
android:privateImeOptions setPrivateImeOptions(String) 设置文本框关联输入法的私有选项。在EditText中使用。
android:inputType setRawInputType(int) 设置文本框的类型,用于帮助输入法显示合适的键盘类型。在EditView使用。
android:fontFamily setTypeface(Typeface) 设置文本框内文本的字体。
android:scrollHorizontally setScrollHorizontally(boolean) 设置当文本框不够显示全部内容时是否允许水平滚动。即超出TextView的宽度的情况下,是否出现横拉条。
android:selectAllOnFocus setSelectAllOnFocus(boolean) 当文问框的内容可选择,设置是否当它获得焦点时自动选中所有文本。 TextView中设置后无效果。在EditView使用。
android:bufferType指定getText()方式取得的文本类别。选项editable 类似于StringBuilder可追加字符,也就是说getText后可调用append方法设置文本内容。spannable 则可在给定的字符区域使用样式,参见这里1、这里2。
android:editorExtras

setExtractedText(ExtractedText)

setInputExtras(int)

设置文本的额外的输入数据。
android:freezesText setFreezesText(boolean) 设置保存文本的内容以及光标的位置。

TextView是一个很复杂的控件,派生类很多。熟悉TextView,对自定义控件很有好处。

复杂的控件:TextView、ListView、GridView

示例程序:AndroidDemos/UI_Component_View_TextView