中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中怎么使用TextView文字自動生成鏈接

發布時間:2021-06-26 15:44:41 來源:億速云 閱讀:335 作者:Leah 欄目:移動開發

Android中怎么使用TextView文字自動生成鏈接,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、在Layout文件中設置TextView的屬性

android:autoLink="email|phone|web"

這樣Android就會自動識別郵件、電話號碼、網址了,點擊時會出發不同的Intent進行處理。
二、使用Linkify

Linkify是一個輔助類,通過RegEx樣式匹配,自動地在TextView類(和繼承的類)中創建超鏈接。

符合特定的RegEx樣式的文本會被轉變成可點擊的超鏈接,這些超鏈接隱式地調用startActivity(new Intent(Intent.ACTION_VIEW, uri)),符合的文本會作為目標URI。

你可以指定任意的字符串樣式為鏈接;方便地,Linkify類提供了預置的通用內容類型(如電話號碼和e-mail、web地址)。

本地的鏈接類型

Linkify.addLinks靜態方法接受一個View來制作鏈接,還包括一個或多個支持的默認內容類型的位結果。Linkify類提供了一些內容類型:WEB_URLS、EMAIL_ADDRESSES、PHONE_NUMBERS和ALL.

接下來的代碼片段顯示如何為TextView制作鏈接顯示web和e-mail地址為超鏈接。當點擊時,它們會相應地打開瀏覽器或e-mail應用程序。

TextView textView = (TextView)findViewById(R.id.myTextView);   Linkify.addLinks(textView, Linkify.WEB_URLS|Linkify.EMAIL_ADDRESSES);

你可以在layout資源里使用android:autoLink特性來為View制作鏈接。它支持一個或多個(用|分割)自定義的值:none、web、email、phone或all。接下來的XML片段顯示了如何為電話號碼和e-mail地址添加超鏈接:

<TextView   android:layout_width=”fill_parent”   android:layout_height=”fill_parent”   android:text=”@string/linkify_me”   android:autoLink=”phone|email”   />

創建自定義的鏈接字符串

為了定義自己的鏈接字符串,你需要創建一個RegEx樣式來匹配文本,進而顯示成超鏈接。

和本地類型一樣,通過調用Linkify.addLinks來指定目標View,但這次,傳入的是新的RegEx樣式。你還可以傳入一個前綴,當鏈接點擊時,它會添加到目標URI上。

接下來的例子顯示了一個View鏈接到由Android Content Provider(下一章你會創建)提供的地震數據。與包含所有的情況相比,鏈接樣式能匹配任何以“quake”開頭后跟一個數字的文本。在Intent被觸發前,內容會被添加到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接口。它們提供一些對目標URI的額外控制和定義匹配字符串,它們的使用如下的框架代碼所示:

Linkify.addLinks(myTextView, pattern, prefixWith, new MyMatchFilter(), new MyTransformFilter());

使用Match Filter

在你定義的MatchFilter中實現acceptMatch方法,來為RegEx樣式匹配添加額外的條件。當一個潛在的匹配發現時,acceptMatch被觸發,匹配的開始點和結束點(包括被查找的整個文本)以參數的形式傳入。

接下來的代碼顯示了一個MatchFilter的實現,它取消任何之前是一個“!”的匹配。

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) != &lsquo;!&rsquo;);   <span style="white-space:pre">  </span>}   }

使用Transform Filter

Transform Filter為格式化文本字符串提供了更大的自由度,允許你修改由鏈接文本自動生成的隱式URI。減少鏈接文本和目標URI的耦合能更加自由地決定如何顯示數據字符串給用戶。

使用Transform Filter,在你定義的TransformFilter中實現transformUrl方法。當Linkify找到正確的匹配后,它會調用transformUrl,傳入使用的RegEx樣式和它創建的默認URI字符串。你可以修改匹配的字符串,然后返回一個適合給其它Android應用程序“看”的URI。

下面的TransformFilter實現將匹配的文本轉換成小寫的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>}   }

關于Android中怎么使用TextView文字自動生成鏈接問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洪江市| 昌平区| 新化县| 杂多县| 旌德县| 乌恰县| 宁河县| 溧水县| 阜宁县| 温州市| 卓资县| 丹东市| 昭苏县| 长顺县| 都昌县| 南涧| 板桥市| 盐亭县| 永安市| 抚顺县| 青铜峡市| 剑阁县| 包头市| 龙陵县| 庆安县| 益阳市| 青铜峡市| 棋牌| 泗阳县| 衡阳市| 纳雍县| 曲松县| 鲁甸县| 曲麻莱县| 花莲县| 左云县| 依兰县| 宜春市| 西丰县| 舟曲县| 庆城县|