1 TextView直接继承与View。
对每个控件都要关注:界面+ 事件。
界面是如何呈现的?
事件是如何实现的?
对每个控件做练习,并模仿商业app实现。
从最简单和最常见的控件来
约定:
特殊组件,详细讲事件和原理。
普通组件,简单讲解用法。
2 TextView(文本框)
表1 TextView支持的XML属性以及相关方法
参考资料:
《疯狂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