Android中怎么使用TextView文字自動(dòng)生成鏈接,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、阿壩州網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為阿壩州等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
。
一、在Layout文件中設(shè)置TextView的屬性
android:autoLink="email|phone|web"
這樣Android就會(huì)自動(dòng)識(shí)別郵件、電話號(hào)碼、網(wǎng)址了,點(diǎn)擊時(shí)會(huì)出發(fā)不同的Intent進(jìn)行處理。
二、使用Linkify
Linkify是一個(gè)輔助類,通過(guò)RegEx樣式匹配,自動(dòng)地在TextView類(和繼承的類)中創(chuàng)建超鏈接。
符合特定的RegEx樣式的文本會(huì)被轉(zhuǎn)變成可點(diǎn)擊的超鏈接,這些超鏈接隱式地調(diào)用startActivity(new Intent(Intent.ACTION_VIEW, uri)),符合的文本會(huì)作為目標(biāo)URI。
你可以指定任意的字符串樣式為鏈接;方便地,Linkify類提供了預(yù)置的通用內(nèi)容類型(如電話號(hào)碼和e-mail、web地址)。
本地的鏈接類型
Linkify.addLinks靜態(tài)方法接受一個(gè)View來(lái)制作鏈接,還包括一個(gè)或多個(gè)支持的默認(rèn)內(nèi)容類型的位結(jié)果。Linkify類提供了一些內(nèi)容類型:WEB_URLS、EMAIL_ADDRESSES、PHONE_NUMBERS和ALL.
接下來(lái)的代碼片段顯示如何為TextView制作鏈接顯示web和e-mail地址為超鏈接。當(dāng)點(diǎn)擊時(shí),它們會(huì)相應(yīng)地打開瀏覽器或e-mail應(yīng)用程序。
TextView textView = (TextView)findViewById(R.id.myTextView); Linkify.addLinks(textView, Linkify.WEB_URLS|Linkify.EMAIL_ADDRESSES);
你可以在layout資源里使用android:autoLink特性來(lái)為View制作鏈接。它支持一個(gè)或多個(gè)(用|分割)自定義的值:none、web、email、phone或all。接下來(lái)的XML片段顯示了如何為電話號(hào)碼和e-mail地址添加超鏈接:
<TextView android:layout_width=”fill_parent” android:layout_height=”fill_parent” android:text=”@string/linkify_me” android:autoLink=”phone|email” />
創(chuàng)建自定義的鏈接字符串
為了定義自己的鏈接字符串,你需要?jiǎng)?chuàng)建一個(gè)RegEx樣式來(lái)匹配文本,進(jìn)而顯示成超鏈接。
和本地類型一樣,通過(guò)調(diào)用Linkify.addLinks來(lái)指定目標(biāo)View,但這次,傳入的是新的RegEx樣式。你還可以傳入一個(gè)前綴,當(dāng)鏈接點(diǎn)擊時(shí),它會(huì)添加到目標(biāo)URI上。
接下來(lái)的例子顯示了一個(gè)View鏈接到由Android Content Provider(下一章你會(huì)創(chuàng)建)提供的地震數(shù)據(jù)。與包含所有的情況相比,鏈接樣式能匹配任何以“quake”開頭后跟一個(gè)數(shù)字的文本。在Intent被觸發(fā)前,內(nèi)容會(huì)被添加到URI上。
int flags = Pattern.CASE_INSENSITIVE; Pattern p = Pattern.compile(“\\bquake[0-9]*\\b”, flags); Linkify.addLinks(myTextView, p, “content://com.paad.earthquake/earthquakes/”);
Linkify還支持TranformFilter和MatchFilter接口。它們提供一些對(duì)目標(biāo)URI的額外控制和定義匹配字符串,它們的使用如下的框架代碼所示:
Linkify.addLinks(myTextView, pattern, prefixWith, new MyMatchFilter(), new MyTransformFilter());
使用Match Filter
在你定義的MatchFilter中實(shí)現(xiàn)acceptMatch方法,來(lái)為RegEx樣式匹配添加額外的條件。當(dāng)一個(gè)潛在的匹配發(fā)現(xiàn)時(shí),acceptMatch被觸發(fā),匹配的開始點(diǎn)和結(jié)束點(diǎn)(包括被查找的整個(gè)文本)以參數(shù)的形式傳入。
接下來(lái)的代碼顯示了一個(gè)MatchFilter的實(shí)現(xiàn),它取消任何之前是一個(gè)“!”的匹配。
class MyMatchFilter implements MatchFilter { <span style="white-space:pre"> </span>public boolean acceptMatch(CharSequence s, int start, int end) { <span style="white-space:pre"> </span>return (start == 0 || s.charAt(start-1) != ‘!’); <span style="white-space:pre"> </span>} }
使用Transform Filter
Transform Filter為格式化文本字符串提供了更大的自由度,允許你修改由鏈接文本自動(dòng)生成的隱式URI。減少鏈接文本和目標(biāo)URI的耦合能更加自由地決定如何顯示數(shù)據(jù)字符串給用戶。
使用Transform Filter,在你定義的TransformFilter中實(shí)現(xiàn)transformUrl方法。當(dāng)Linkify找到正確的匹配后,它會(huì)調(diào)用transformUrl,傳入使用的RegEx樣式和它創(chuàng)建的默認(rèn)URI字符串。你可以修改匹配的字符串,然后返回一個(gè)適合給其它Android應(yīng)用程序“看”的URI。
下面的TransformFilter實(shí)現(xiàn)將匹配的文本轉(zhuǎn)換成小寫的URI:
class MyTransformFilter implements TransformFilter { <span style="white-space:pre"> </span>public String transformUrl(Matcher match, String url) { <span style="white-space:pre"> </span>return url.toLowerCase(); <span style="white-space:pre"> </span>} }
關(guān)于Android中怎么使用TextView文字自動(dòng)生成鏈接問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
網(wǎng)站名稱:Android中怎么使用TextView文字自動(dòng)生成鏈接
分享網(wǎng)址:http://chinadenli.net/article28/jieicp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、虛擬主機(jī)、軟件開發(fā)、動(dòng)態(tài)網(wǎng)站、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)