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中設置一個屬性就好了。

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