TextView中比较重要的属性
android:textIsSelectable="true"
- 设置该属性后,长按TextView会弹出
选择复制
的菜单,用户可以针对文字内容进行选择复制的操作 - 此状态下TextView是抢夺焦点的(
android:focusable="true"
),当其他控件需要焦点时,需要处理焦点抢夺问题
- 设置该属性后,长按TextView会弹出
android:autoLink="email"
- 该属性有多个值可以进行设置:
none(default)
,web
,email
,phone
,map
,all
; - TextView设置该属性后,点击TextView将会弹出相关平台的菜单,例如:当TextView的
autoLink
设置为email
时,TextView中的文字如果包含邮箱格式的文本,那么该部分文本颜色会发生改变(不同系统版本下的链接颜色不同),点击后会弹出与发送邮件相关的菜单,其他的值以此类推 - 当需要设置多个类型时,使用
|
分隔开。
- 该属性有多个值可以进行设置:
-
android:drawableTop="@mipmap/ic_launcher"
,android:drawableTop="@mipmap/ic_launcher"
,android:drawableTop="@mipmap/ic_launcher"
,android:drawableTop="@mipmap/ic_launcher"
- 该属性的作用是围绕TextView的上下左右分别放置图片
- 注意:
- 不能针对设置的图片进行大小设置;
- 图片只会在其所在方位居中显示;
- TextView的padding作用在图片之外;
- TextView的高度或宽度为wrap_content时,其高度将是文字和图片中较大的那一个;
- gravity只对文字起作用,对图片不起作用;
- 必要的时候可以使用ImageView和TextView组合来实现类似的效果,但是性能肯定不如以前
-
android:drawableStart="@mipmap/ic_launcher"
,android:drawableEnd="@mipmap/ic_launcher"
- 该属性是在API14出现的,但是真正生效是在API17中
- 其作用在默认情况下和
android:drawableLeft
,android:drawableRight
相同 android:drawableLeft
和android:drawableStart
的区别:- 说到它们的区别,就不得不说一个概念:RTL语言(Right To Left)和LTR语言(Left To Right),他们表示的是文字的起始输入方向,世界上有一些国家的书写习惯是从右到左的,比如阿拉伯语,从Android4.1开始支持双向文本的输入和显示
- 设置支持RTL:在manifest中的Application元素加入
android:supportsRtl="true"
这个属性.也可以通过android:textDirection
属性设置文字的方向 android:drawableStart
该属性会根据输入方向自动调整图片的放置方向,android:drawableLeft
则没有这样的效果
-
android:fontFamily="cursive"
- 其作用是引用系统的内建字体,对应的方法
setTypeface(Typeface)
- 其作用是引用系统的内建字体,对应的方法
-
android:typeface="monospace"
- 其作用表面上看起来和
android:fontFamily
相同,都可以引用内建字体,但是引用的字体是不同的,对应的方法setTypeface(Typeface)
- 同时定义两者时,会以
android:fontFamily
为准 -
自定义字体(不建议使用过多的自定义字体,因为字体存储在assets目录下,该目录中的所有内容在打包时是不做任何处理的,也就是说,使用过多字体时,会导致apk包过大)
// 自定义字体 custom = new TextView(this); //xx.ttf 存储在 assets/fonts/ typeface = Typeface.createFromAsset(getAssets(),"fonts/xx.ttf"); custom.setTypeface(typeface);
- 其作用表面上看起来和
-
android:lineSpacingExtra="10dp"
- 设置文字行间距
-
android:shadowColor="@color/colorPrimary"
,android:shadowDx="1.2"
,android:shadowDy="1.2"
,android:shadowRadius="5"
- 这几条属性通常一起使用,用于设置文字的阴影,使用极少
-
android:textAllCaps="true"
- 设置所有字母为大写
-
android:textStyle="italic"
- 设置字体样式(默认是正常样式,粗体,斜体)
-
android:textAppearance="?android:attr/textAppearanceLarge"
- 设置字体外观,这个属性比
android:textStyle
的功能更强,可以在styles中定义字体的样式,使用该属性来进行引用
- 设置字体外观,这个属性比
-
android:ellipsize="end"
- 设置行字的省略方式,有四个值可以选择
start
,middle
,end
,marquee
;前三个分别代表省略号显示的位置,设置marquee
配合其他属性可以实现文字滚动的效果 -
文字滚动效果的实现(又称为跑马灯效果)
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:singleLine="true" android:text="@string/ellipsize"/>
- 注意事项:当实现跑马灯效果时,需要注意焦点抢夺问题,当焦点被抢夺时,文字不会滚动,例如:
android:textIsSelectable="true"
该属性就会抢夺焦点
- 设置行字的省略方式,有四个值可以选择