TextView的一些高级用法

        说起TextView,大家肯定都很熟悉。我相信,大家不论第一本Android的书是哪一本,第一个程序都是一个只展示hello world的界面。说真的,我也一直自认为自己对TextView非常的熟悉了,也一直觉得TextView没什么好去学习和总结的了。直到前几天,有个小需求需要文本下划线。我想都没想,就准备自定义View。后来一想,这应该是一个非常常见的需求,TextView应该有这样的支持。于是,我去开发者网站查了TextView所有的属性,最后也没发现下划线。当我打算放弃,准备自己写的时候,去百度了一下,结果真的找到了。因为去开发者网站查看了所有的TextView的属性,我发现,对于TextView我忽略了很多强大的功能。今天,总结一下TextView的一些高级用法。

1.autoLink

        可以自动识别TextView的text,如果是email会跳转邮箱,如果是电话号码会跳转拨号界面,如果是网址会打开浏览器。设置为all时,会自动识别所有可能的链接情况。

属性

描述

all

所有的链接

email

email地址

map

地图地址(弃用)

none

无(默认)

phone

电话号码

web

网址

2.drawableXXX

        可以在文本的上下左右位置设置图片,可以通过drawablePadding属性设置图片和文本的间距。这个属性的作用其实就是把原本需要两个控件完成的界面用一个控件实现了。这里需要注意一下:在正常的布局下,left和start,right和end其实是一样的位置。

 

属性

描述

android:drawableBottom

在文本的下边添加图片

android:drawableEnd

在文本的结束添加图片

android:drawableLeft

在文本的左边添加图片

android:drawablePadding

设置文本和图片间的距离

android:drawableRight

在文本的右边添加图片

android:drawableStart

在文本的开始添加图片

android:drawableTop

在文本的上方添加图片

3.ellipsize

        可以控制显示不开的文本的显示方式,被截断、显示省略号等。更可以搭配其他几个属性,让你的TextView动起来,实现文字滚动效果。

属性

描述

end

显示不开时,省略号在结尾

marquee

配合其它几个属性,实现滚动

middle

显示不开时,省略号在结尾

none

显示不开时,截断文本

start

显示不开时,省略号在结尾

        使用marquee属性实现文字滚动:

android:singleLine="true"

android:ellipsize="marquee"

android:focusable="true"

android:focusableInTouchMode="true"

4.marqueeRepeatLimit

        设置上面说的滚动效果的重复次数,例如我们设置为2。那么,当文本滚动显示两次后,将结束滚动展示的效果。

5.lineSpacingExtra

        可以设置每行文本间额外的间距。文本多行显示时,每行文本间是有一个默认的间距的,而这个属性就是在默认间距的基础上额外增加的间距。

6.textStyle

        设置bold可以设置文本加粗,默认是不加粗的效果。

7.下划线

        有时候,为了突出我们的一些文本,我们需要下划线效果。TextView本身没有可以在xml中直接设置的属性,需要我们在java文件中去设置,具体的方法如下:

        tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);

        其实,TextView还有其它一些我们很少使用但却非常强大的功能。我列举的一些,也只是在我的开发中用到的一些。Android很多原生的控件,其实本身支持很多我们意想不到的属性,需要我们去发现和探索。可能我们对这些属性熟一些,有很多的view,根本不需要我们自定义,可能只需要在xml中设置一个属性就好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章