欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

TextView中URL等指定特殊字符串與點(diǎn)擊事件解析

 更新時(shí)間:2017年11月22日 11:04:06   作者:丙丁  
這篇文章主要為大家詳細(xì)介紹了TextView中URL等指定特殊字符串與點(diǎn)擊事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

使用TextView時(shí),有時(shí)可能需要給予TextView里的特定字符串,比如URL,數(shù)字特別的樣式,必希望能夠添加點(diǎn)擊事件。比如發(fā)短信時(shí),文字里的url就可以點(diǎn)擊直接打開瀏覽器,數(shù)字可以點(diǎn)擊撥打電話。

Android提供了SpannableString類來(lái)對(duì)TextView的內(nèi)容進(jìn)行處理,具體步驟: 

1.new一個(gè)SpannableString對(duì)象,傳入需要顯示在TextView上的內(nèi)容; 

2.對(duì)內(nèi)容進(jìn)行處理(比如用正則表達(dá)式解析出URL或數(shù)字等等,并指定樣式),這部分的核心就是調(diào)用SpannableString對(duì)象的setSpan()方法;

public void setSpan(Object what, int start, int end, int flags);

可以看到有四個(gè)參數(shù),start 和 end 是意味著你要改變的是該字符串下標(biāo)start到end的部分,what可以傳入對(duì)start到end的文本的處理方式或者樣式,也可以傳入你指定的東西來(lái)取代文本,比如圖片。flags總共有四種,他意味著是否影響指定處前一個(gè)或后一個(gè)字符串 

3.TextView.setText(spannableString),由于SpannableString實(shí)現(xiàn)了CharSequence,所以TextView可以直接set。

注意:到這里TextView的指定內(nèi)容就已經(jīng)實(shí)現(xiàn)指定樣式了。,但是如果想要添加點(diǎn)擊事件,還需要讓TextView調(diào)用setMovementMethod(MovementMethod movement)來(lái)實(shí)現(xiàn)點(diǎn)擊事件。 

下面貼出我的Demo,實(shí)現(xiàn)將TextView里的數(shù)字標(biāo)注出來(lái),點(diǎn)擊數(shù)字將彈出Toast將數(shù)字顯示出來(lái)。

 private void init() {
  tvMain.setMovementMethod(LinkMovementMethod.getInstance());
  SpannableString s = new SpannableString(CONTENT);
  filterNumber(s);
  tvMain.setText(s);
 }

 private static final String REG = "\\d+";

 public class TextClickableSpan extends ClickableSpan {
  private String text;

  public TextClickableSpan(String text) {
   this.text = text;
  }

  @Override
  public void onClick(View view) {
   Toast.makeText(MyActivity.this,text,Toast.LENGTH_SHORT).show();
  }
 }
private void filterNumber(Spannable s) {
  Matcher m = Pattern.compile(REG).matcher(s.toString());
  while (m.find()) {
   String text = m.group();
   TextClickableSpan span = new TextClickableSpan(text);
   s.setSpan(span,m.start(),m.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  }
 }

代碼很簡(jiǎn)單,首先要說(shuō)的是ClickableSpan,因?yàn)楫?dāng)你點(diǎn)擊該特定字符串時(shí),LinkMovementMethod的onTouchEvent()方法,將會(huì)根據(jù)你點(diǎn)擊的位置獲得ClickableSpan對(duì)象,并執(zhí)行該對(duì)象的onClick方法。而這個(gè)ClickableSpan需要在setSpan時(shí)傳入(這個(gè)地方不僅可以傳入ClickableSpan還有諸如ImageSpan等等,不過(guò)如果要可以點(diǎn)擊的話,要傳入ClickableSpan。其他的這里不一一贅述)。

然后我的filterNumber方法,就是利用正則表達(dá)式來(lái)過(guò)濾數(shù)字,并調(diào)用setSpan一一傳入相應(yīng)start和end。

最后,要說(shuō)下setSpan的最后一個(gè)參數(shù)flags:

Spanned.SPAN_INCLUSIVE_EXCLUSIVE 是當(dāng)前這個(gè)設(shè)置包括前面,不包括后面

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 當(dāng)前設(shè)置前后不包括

Spanned.SPAN_INCLUSIVE _INCLUSIVE 當(dāng)前設(shè)置包括前面,包括后面

Spanned.SPAN_EXCLUSIVE_INCLUSIVE 當(dāng)前設(shè)置不包括前面,包括后面

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android開發(fā)中滑動(dòng)分頁(yè)功能實(shí)例詳解

    Android開發(fā)中滑動(dòng)分頁(yè)功能實(shí)例詳解

    這篇文章主要介紹了Android開發(fā)中滑動(dòng)分頁(yè)功能,結(jié)合實(shí)例形式詳細(xì)分析了Android滑動(dòng)分頁(yè)功能的具體步驟與相關(guān)實(shí)現(xiàn)技巧,代碼中備有詳盡的注釋便于理解,需要的朋友可以參考下
    2017-10-10
  • Android開發(fā)之搜索框SearchView用法示例

    Android開發(fā)之搜索框SearchView用法示例

    這篇文章主要介紹了Android開發(fā)之搜索框SearchView用法,結(jié)合實(shí)例形式分析了Android搜索框SearchView的基本功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • 詳解Android登陸界面用戶協(xié)議解決方案

    詳解Android登陸界面用戶協(xié)議解決方案

    這篇文章主要介紹了詳解Android登陸界面用戶協(xié)議解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Android 通過(guò)代碼設(shè)置、打開wifi熱點(diǎn)及熱點(diǎn)連接的實(shí)現(xiàn)代碼

    Android 通過(guò)代碼設(shè)置、打開wifi熱點(diǎn)及熱點(diǎn)連接的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android 通過(guò)代碼設(shè)置、打開wifi熱點(diǎn)及熱點(diǎn)連接的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05
  • android操作XML的幾種方法總結(jié)

    android操作XML的幾種方法總結(jié)

    在android中,操作xml文件,一般有幾種方式:SAX操作,Pull操作,DOM操作等。其中DOM的方式,可能是大家最熟悉的,也是符合W3C標(biāo)準(zhǔn)的
    2013-10-10
  • Android創(chuàng)建一個(gè)Activity的方法分析

    Android創(chuàng)建一個(gè)Activity的方法分析

    這篇文章主要介紹了Android創(chuàng)建一個(gè)Activity的方法,結(jié)合實(shí)例形式分析了Android創(chuàng)建Activity的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • Android編程實(shí)現(xiàn)播放MP3功能示例

    Android編程實(shí)現(xiàn)播放MP3功能示例

    這篇文章主要介紹了Android編程實(shí)現(xiàn)播放MP3功能,結(jié)合實(shí)例形式分析了Android播放MP3功能的界面布局與功能實(shí)現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • Android TextView顯示html樣式的文字

    Android TextView顯示html樣式的文字

    這篇文章主要介紹了Android TextView顯示html樣式的文字的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Flutter Map常用操作方法總結(jié)

    Flutter Map常用操作方法總結(jié)

    Flutter 中的 Map 是一種鍵值對(duì)的集合,可以存儲(chǔ)任意類型的數(shù)據(jù),并且可以通過(guò)鍵來(lái)訪問(wèn)和操作對(duì)應(yīng)的值,下面我們就來(lái)學(xué)習(xí)一下Flutter Map的常用操作方法吧
    2023-11-11
  • Android開發(fā)之文本內(nèi)容自動(dòng)朗讀功能實(shí)現(xiàn)方法

    Android開發(fā)之文本內(nèi)容自動(dòng)朗讀功能實(shí)現(xiàn)方法

    這篇文章主要介紹了Android開發(fā)之文本內(nèi)容自動(dòng)朗讀功能實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Android自動(dòng)朗讀TTS功能的操作步驟、相關(guān)函數(shù)使用方法與注意事項(xiàng),需要的朋友可以參考下
    2017-09-09

最新評(píng)論