說起TextView,大家肯定都很熟悉。我相信,大家不論第一本Android的書是哪一本,第一個程序都是一個只展示hello world的界面。說真的,我也一直自認爲自己對TextView非常的熟悉了,也一直覺得TextView沒什麼好去學習和總結的了。直到前幾天,有個小需求需要文本下劃線。我想都沒想,就準備自定義View。後來一想,這應該是一個非常常見的需求,TextView應該有這樣的支持。於是,我去開發者網站查了TextView所有的屬性,最後也沒發現下劃線。當我打算放棄,準備自己寫的時候,去百度了一下,結果真的找到了。因爲去開發者網站查看了所有的TextView的屬性,我發現,對於TextView我忽略了很多強大的功能。今天,總結一下TextView的一些高級用法。
1.autoLink
可以自動識別TextView的text,如果是email會跳轉郵箱,如果是電話號碼會跳轉撥號界面,如果是網址會打開瀏覽器。設置爲all時,會自動識別所有可能的鏈接情況。
屬性 |
描述 |
all |
所有的鏈接 |
|
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中設置一個屬性就好了。