最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TextView中URL等指定特殊字符串與點擊事件解析

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

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

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

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

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

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

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

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

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

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

 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);
  }
 }

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

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

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

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

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

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

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

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

相關(guān)文章

  • Android多種支付方式的實現(xiàn)示例

    Android多種支付方式的實現(xiàn)示例

    App的支付流程,添加多種支付方式,不同的支付方式,對應(yīng)的操作不一樣,有的會跳轉(zhuǎn)到一個新的webview,有的會調(diào)用系統(tǒng)瀏覽器,有的會進去一個新的表單頁面,等等,本文就給大家詳細(xì)介紹一下Android 多種支付方式的優(yōu)雅實現(xiàn),需要的朋友可以參考下
    2023-09-09
  • Android創(chuàng)建文件實現(xiàn)對文件監(jiān)聽示例

    Android創(chuàng)建文件實現(xiàn)對文件監(jiān)聽示例

    Android創(chuàng)建文件實現(xiàn)對文件監(jiān)聽,可以用android.os.FileObserver;類來實現(xiàn),下面是實現(xiàn)代碼,內(nèi)有注釋
    2014-01-01
  • TextView長按復(fù)制的實現(xiàn)方法(總結(jié))

    TextView長按復(fù)制的實現(xiàn)方法(總結(jié))

    下面小編就為大家?guī)硪黄猅extView長按復(fù)制的實現(xiàn)方法(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android Drawable及其相關(guān)類的使用

    Android Drawable及其相關(guān)類的使用

    本文主要講解Android Drawable,這里整理了Drawable 的文檔資料和實例代碼以及實現(xiàn)效果圖,有需要的小伙伴可以參考下
    2016-08-08
  • 用xutils3.0進行下載項目更新

    用xutils3.0進行下載項目更新

    這篇文章主要介紹了用xutils3.0進行下載項目更新的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • Android實現(xiàn)卡片翻轉(zhuǎn)動畫

    Android實現(xiàn)卡片翻轉(zhuǎn)動畫

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)卡片翻轉(zhuǎn)動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android Service總結(jié)及詳細(xì)介紹

    Android Service總結(jié)及詳細(xì)介紹

    本文主要介紹Android Service的知識,這里整理了詳細(xì)資料及簡單實現(xiàn)示例代碼,有需要的小伙伴可以參考下
    2016-09-09
  • Android Intent傳遞數(shù)據(jù)大小限制詳解

    Android Intent傳遞數(shù)據(jù)大小限制詳解

    這篇文章主要給大家介紹了關(guān)于Android Intent傳遞數(shù)據(jù)大小限制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Android Studio導(dǎo)入第三方類庫的方法

    Android Studio導(dǎo)入第三方類庫的方法

    這篇文章主要介紹了Android Studio導(dǎo)入第三方類庫的方法,導(dǎo)入*.jar包、導(dǎo)入第三方j(luò)ava類庫含源碼包以及aar的引入,需要的朋友可以參考下
    2016-07-07
  • Android?手寫熱修復(fù)dex實例詳解

    Android?手寫熱修復(fù)dex實例詳解

    這篇文章主要為大家介紹了Android?手寫熱修復(fù)dex實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論

沛县| 富源县| 静海县| 连江县| 佛山市| 九龙城区| 麦盖提县| 樟树市| 容城县| 读书| 航空| 探索| 正阳县| 阳新县| 宁都县| 个旧市| 读书| 大荔县| 犍为县| 壤塘县| 奉贤区| 龙口市| 万荣县| 达拉特旗| 丹东市| 犍为县| 晋江市| 密云县| 交城县| 万安县| 乌拉特中旗| 怀集县| 濉溪县| 屏边| 无棣县| 页游| 灌云县| 咸丰县| 辽中县| 临沂市| 通化市|