1. 程式人生 > >android 自定義TextView中Html超連結點選事件詳解

android 自定義TextView中Html超連結點選事件詳解

public class TextHtmlActivity extends Activity {
    private TextView text;
    private Activity mActivty;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.text_html_layout);
        mActivty = this;
        text  = (TextView) findViewById(R.id.text);
        text.setText(Html.fromHtml("<b>text3:</b>  " +
                "Text with a " + "<a href=\"http://www.baidu.com\">link</a> " +
                "點選這個連線---"+
                "<a href=\"http://www.dewen.io/q/1744\">連線</a> "+
                "created in the Java source code using HTML."));
        text.setMovementMethod(LinkMovementMethod.getInstance());
        CharSequence str = text.getText();
        if(str instanceof Spannable){
            int end = str.length();
            Spannable sp = (Spannable)text.getText();  //構建Spannable物件、繼承Spanned、Spanned物件繼承CharSequener
            URLSpan[] urls=sp.getSpans(0, end, URLSpan.class);  //找出text中的a標籤
            //SpannableStringBuilder、SpannableString物件跟String物件差不多、只是比String物件多setSpan,
            //可以給字串設定樣式、大小、背景色...而 SpannableStringBuilder跟SpannableString的關係就跟String跟StringBuffer關係一樣
            SpannableStringBuilder style=new SpannableStringBuilder(str);
            style.clearSpans();//should clear old spans
            for(URLSpan url : urls){
                MyClickSpan myURLSpan = new MyClickSpan();
                //設定樣式其中引數what是具體樣式的實現物件,start則是該樣式開始的位置,end對應的是樣式結束的位置,
                // 引數 flags,定義在Spannable中的常量
                style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
            text.setText(style);
        }

    }
    private class MyClickSpan extends ClickableSpan{
        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setUnderlineText(false);
            super.updateDrawState(ds);
        }
        @Override
        public void onClick(View widget) {
            Toast.makeText(mActivty,"click link",Toast.LENGTH_SHORT).show();
        }
    }
}

相關推薦

android 定義TextViewHtml結點事件

public class TextHtmlActivity extends Activity { private TextView text; private Activity mActivty; @Override protected vo

Android 定義view(1) --- Attr、Style和Theme

轉載:https://www.jianshu.com/p/dd79220b47dd 概念說明:       Attr:屬性,風格樣式的最小單元;      Style:風格,它是一系列Attr的集合用以定義一個View

CHtmlView 和 Webbrowser 控制元件結點事件的獲取與檢測

本文轉自:http://live.aulddays.com/tech/08/chtmlviewlinkclick/ 在自己的程式中使用 CHtmlView 或直接嵌入 Webbrowser 控制元件顯示網頁時,常常需要獲取網頁元素的一些事件,以實現對網頁顯示的控制或與網

RecyclerView新增點事件textView結點事件衝突

最近做了一個小的demo,使用RecyclerView,item要求顯示一段文字,文字包含點選事件,結果發現,超連結的點選事件和RecyclerView的點選事件發生衝突,於是上網搜尋相關問題,走了一些彎路,最後在國外的網站發現解決方法, 以下是解決該問題的步驟: 1.

WebView載入網頁以及處理裡面的結點事件

private Context context;private WebView webView;private String weburl1 = "http://4004.wuurl.com/";private String weburl2 = "http://act.uniny.com/qiman16052

android 定義TextView 流光字,彩色text

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="ht

Android定義TextView 定義設定圓角背景色

public class RoundTextView extends TextView {  private int mBgColor = 0;  private int mCornerSize = 18; public RoundTextView(Context cont

定義TextView動態設定圖片大小

開發過程中,很多場景中都有用到文字和圖片並列顯示的情況,如下圖示: 上圖紅色框中的佈局你會怎麼實現? 1、在水平LinearLayout佈局中放一個ImageView和一個TextView進行實現? 2、在TextView中設定其drawableL

Android 定義View attr屬性 深入解析

一、attr和styleable 自定義View,如果想在xml指定引數(例如:改變字型顏色,字型大小),需要宣告一個styleable,並在裡面自己定義一些attr屬性。 attr不依賴於styleable,styleable只是為了方便attr的使用。

Android 定義TextView實現文字內容自動調整字型大小以適應TextView的大小

/** * 自定義TextView,文字內容自動調整字型大小以適應TextView的大小 * @author yzp */ public class AutoFitTextView extends TextView { private

筆記——Android定義seekbar,滑塊顯示不全解決辦法

自定義seekBar的時候發現,圓形滑塊總有一部分被覆蓋,設定什麼padding之類的病不起作用,查詢資料發現 android:thumbOffset="0dp" 在佈局檔案中加上thumbOffset屬性可以解決,thumbOffset屬性表示滑塊距離左側的間距。 下面

a標籤結點後無虛邊框,完美定義連結籤樣式

最近在做專案的時候,為了改變A標籤的固有樣式,老闆要求標籤的下劃線【text-decoration】與文字之間的距離應該增加1px。由於知識簡陋,沒找到好的方法,於是我就想到了笨方法:把text-decoration設定為none,然後給標籤註冊了一個mouseover事件

Android定義TextView實現文字自動滾動

效果:迴圈滾動,類似廣告條思路:開啟定時器重新整理繪製文字的位置即可達到效果。步驟1:新建ScrollTextView類繼承自TextView。程式碼如下:public class ScrollTextView extends TextView { private

Android 定義TextView實現描邊

前言: 這裡呢就是給自己的做的專案一些小功能做一個筆記。也希望能對大家能有幫助。 正文: 這裡就簡單的自定義了TextView 描邊的效果。更多效果, 大家可以參照這個大神的:點選開啟連結      以及這位大神:點選開啟連結 我這裡寫的就不像上面兩位大神功能那麼強大了。

Android定義TextView省略號樣式

在佈局xml中設定textView的欄位 android:maxLines="2"  android:ellipsize="end"欄位之後,textview會自動壓縮行數,並且對壓縮掉的部分用...顯示。如果不想用...而想用。。。或者... ...就需要自定義這個省略號

Android定義TextView字型!

package com.insight.androidfont; import android.content.Context; import android.graphics.Typeface; import android.util.AttributeSet; import android.widget.

Android 定義OA平臺制作ListView單擊事件失效

rcc idt mes red left emc sde add XML 因為自帶新OA平臺制作QQ2952777280【話仙源碼論壇】hxforum.com【木瓜源碼論壇】papayabbs.com 的listView不能滿足項目需求,通過實現自己的Adapter去繼承A

android 監聽webview的結點

webview.setWebViewClient(new WebViewClient(){ @Override

Android 定義View實現多行RadioGroup單(多)

我們都知道RadioGroup可以實現選擇框,但它有一個侷限性,由於它是繼承自LinearLayout的,所以只能有一個方向,橫向或者縱向; 好在我們可以自定義View來實現多行的一個RadioGroup(我把它命令為MultiLineRadioGroup); 在貼出程式碼

Spark資料過濾、定義分割槽、Shuffer調優 經典案例(

案例: 根據學科取得最受歡迎的老師的前兩名 這個是資料 http://bigdata.edu360.cn/zhangsan http://bigdata.edu360.cn/zhangsan http://bigdata.edu360.cn/lisi http: