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

Android開發(fā)實(shí)現(xiàn)TextView超鏈接5種方式源碼實(shí)例

 更新時間:2020年03月19日 16:48:47   作者:jkdev  
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)TextView超鏈接5種方式源碼實(shí)例,需要的朋友可以參考下

Android實(shí)現(xiàn)TextView超鏈接一共有五種方式:推薦第四種、第五種

1. 直接在xml文件中配置autoLink屬性(簡單易用,效果單一)

autoLink屬性一共有六個值,分別是none(正常),web(將文本識別為一個網(wǎng)址),phone(將文本識別為一個電話號碼),mail(將文本識別為一個郵件地址),map(這個,呃,該怎么表述呢?會打開地圖應(yīng)用),all(根據(jù)文本自動識別)。一般情況下我們設(shè)置為all即可,我們看看,這個時候它就會自動將TextView中的電話號碼、郵件地址、網(wǎng)頁鏈接等識別出來,這中方式是最簡單的一種。如:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:autoLink="all"
    android:text="
    android:textSize="16dp" />

2. 使用HTML語言

我們知道TextView可以直接顯示轉(zhuǎn)換后的HTML,那么借助H5開發(fā)經(jīng)驗(yàn),我們知道網(wǎng)頁中的超鏈接也可以在TextView中打開,如下:

只要我們寫好協(xié)議,這個其實(shí)也很簡單。

 

 tv1.setText(Html.fromHtml("<a href='tel:18565554482'>打電話</a>,<a href='smsto:18565554482'>發(fā)短信</a>,<a href='mailto:584991843@qq.com'>發(fā)郵件</a>,<a )); 
  tv1.setMovementMethod(LinkMovementMethod.getInstance()); 

3. 在strings.xml中直接寫HTML,然后在TextView的xml中直接引用即可(跟第二種方法差不多)

strings.xml中的定義如下:

<string name="tv4"><a href='tel:18565554482'>打電話</a>,<a href='smsto:18565554482'>發(fā)短信</a>,<a href='mailto:584991843@qq.com'>發(fā)郵件</a>,<a >Go百度</a></string> 

TextView的XML定義如下:

<TextView 
    android:id="@+id/tv4" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    android:gravity="center" 
    android:text="@string/tv4" 
    android:textSize="24sp" > 
  </TextView> 

然后只需要在Activity中設(shè)置該TextView為可點(diǎn)擊狀態(tài)即可:

tv4.setMovementMethod(LinkMovementMethod.getInstance()); 

4. 使用SpannableString實(shí)現(xiàn)超鏈接(效果多樣)

關(guān)于SpannableString的更多使用,參見另一篇:

SpannableString ss = new SpannableString("打電話,發(fā)短信,發(fā)郵件,Go百度"); 
ss.setSpan(new URLSpan("tel:18565554482"), 0, 3, 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
ss.setSpan(new URLSpan("smsto:18565554482"), 4, 7, 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
ss.setSpan(new URLSpan("mailto:584991843@qq.com"), 8, 11, 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
ss.setSpan(new URLSpan("http://www.baidu.com"), 12, 16, 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
//SpannableString對象設(shè)置給TextView 
tv3.setText(ss); 
//設(shè)置TextView可點(diǎn)擊 
tv3.setMovementMethod(LinkMovementMethod.getInstance()); 

5. 使用SpannableTextView實(shí)現(xiàn)(效果多樣)

設(shè)置單一效果:

 // Setup single span
SpannableTextView tv1 = (SpannableTextView) view.findViewById(R.id.tv1);
 
Span span1 =
    new Span.Builder("ForegroundSpan, BackgroundSpan, and CustomTypefaceSpan")
        .foregroundColor(R.color.purple_500)
        .backgroundColor(R.color.green_500)
        .typeface(mItalicFont)
        .build();
 
tv1.setFormattedText(span1);

設(shè)置多重效果疊加:

// Setup multiple spans
SpannableTextView tv2 = (SpannableTextView) view.findViewById(R.id.tv2);
 
List<Span> spans1 = new ArrayList<>();
spans1.add(new Span.Builder("ForegroundSpan")
    .foregroundColor(R.color.red_500)
    .build());
spans1.add(new Span.Builder("BackgroundSpan")
    .backgroundColor(R.color.yellow_500)
    .build());
spans1.add(new Span.Builder("ForegroundSpan and BackgroundSpan")
    .foregroundColor(R.color.orange_500)
    .backgroundColor(R.color.blue_500)
    .build());
spans1.add(new Span.Builder("ForegroundSpan, BackgroundSpan, and CustomTypefaceSpan")
    .foregroundColor(R.color.green_500)
    .backgroundColor(R.color.indigo_500)
    .typeface(mRegularFont)
    .build());
 
tv2.setFormattedText(spans1);

實(shí)現(xiàn)無下劃線超鏈接:

自定義的urlspan 繼承URLSpan 去掉下劃線

  //自定義urlspan 去掉下劃線 
  public class URLSpanNoUnderline extends URLSpan {
    public URLSpanNoUnderline(String url) {
      super(url);
    }
 
 
    @Override
    public void updateDrawState(TextPaint ds) {
      super.updateDrawState(ds);
      ds.setUnderlineText(false);
      ds.setColor(Color.BLACK);
    }
  }

本文主要為大家介紹了5種方式實(shí)現(xiàn)Android TextView超鏈接源碼實(shí)例,更多關(guān)于Android實(shí)現(xiàn)TextView超鏈接的文章請查看下面的相關(guān)鏈接

相關(guān)文章

  • Android 簡單服務(wù)定位器模式實(shí)現(xiàn)

    Android 簡單服務(wù)定位器模式實(shí)現(xiàn)

    這篇文章主要介紹了Android 簡單服務(wù)定位器模式實(shí)現(xiàn),幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-03-03
  • 使用Timer實(shí)現(xiàn)網(wǎng)頁勻速加載的進(jìn)度條樣式

    使用Timer實(shí)現(xiàn)網(wǎng)頁勻速加載的進(jìn)度條樣式

    這篇文章主要介紹了使用Timer實(shí)現(xiàn)網(wǎng)頁勻速加載的進(jìn)度條樣式,在使用WebView加載網(wǎng)頁時有時候網(wǎng)速等原因加載比較慢時,影響用戶的體驗(yàn)度,今天小編給大家分享使用timer實(shí)現(xiàn)網(wǎng)頁勻速加載的進(jìn)度條樣式,需要的的朋友參考下吧
    2017-01-01
  • 最新評論