TextView经常被使用到,同时它还是很多被继承的类,接下来讲解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: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:privateImeOptions:设置输入法选项,此处无用,在EditText将进一步讨论。
android:scrollHorizontally:设置文本超出TextView的宽度的情况下,是否出现横拉条。
android:selectAllOnFocus:如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。 TextView中设置后无效果。
android:shadowColor:指定文本阴影的颜色,需要与shadowRadius一起使用。
android:shadowDx:设置阴影横向坐标开始位置。
android:shadowDy:设置阴影纵向坐标开始位置。
android:shadowRadius:设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

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:设置文本区域的最小宽度


这里列出TextView相关属性,需要去看完,这些属性相应的解释。

有些属性是没有列出来的比如android:singleLine过时了(代替android:lines="1",建议一些过时的方法不要用,总能找到现在替换的方法,以为标识过时,是不太适合了。),还有文本显示,直接使用android:inputType:其中有很多标签属性,直接使用这个,详细会在EditText讲解。


那么TextView有一些特殊效果:
1.跑马灯效果
需要设置五个值,跑马灯使用单行才能循环的
android:focusable="true"//焦点聚焦在TextView上
android:focusableInTouchMode="true"是否在触摸模式下获得焦点
android:marqueeRepeatLimit="marquee_forever"(可以设置数字,如为1,则只走一次,如为marquee_forever,不停循环)
android:ellipsize="marquee",只有设置marquee才有跑马灯效果,其他设置如start,middle,end省略号在开始地方,中间,末尾。
android:lines="1"//只有设置当行时,跑马灯才能运行。
这些设置使的界面只能有一个TextView有跑马灯的效果,如果想要有多个跑马灯的效果,需要去继承TextView,并且重写isFocuse()方法,让它永远返回true。这样也能够修改滚动的速度。

ublic class MarqueeTextView extends TextView {


  public MarqueeTextView(Context context) {
   super(context);
  }
  
  public MarqueeTextView(Context context, AttributeSet attrs) {
   super(context, attrs);
  }


  public MarqueeTextView(Context context, AttributeSet attrs,
    int defStyle) {
   super(context, attrs, defStyle);
  }
  
  @Override
  public boolean isFocused() {
   return true;
  }
 }



在xml中使用

<com.ice.widget.view.MarqueeTextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:ellipsize="marquee"
         android:marqueeRepeatLimit="marquee_forever"
         android:lines="1"
android:focusable="true"
android:focusableInTouchMode="true"
         android:text="@string/marquee_text2" />


这样就可以设置多个跑马灯效果。


给大家讲解一些TextView小技巧:
1.如果想要布局底部导航栏,效果为上面为图片,下面是字,大家的第一时间是LinearLayout布局,加上ImageView和TextView,这样做没有错,很好,但是有没有更好的方法呢,有哪就是使用TextView以及其相关属性,android:drawableTop设置图片,那么就达到想要的布局。

2.很多时候,布局完成了就完成了,是否有考虑当字数一旦超过设置的数量,TextView默认是转行,这个时候变为多行,打乱了我们的布局,我们无法去判断传过来的是否有多长的字符,想要去保证布局的完整,android:line="1".需要时刻想起这个属性。

3.当有限制使用多少个字符的时候,设置android:ems