Android實現TextView中部分文字監聽事件
阿新 • • 發佈:2019-02-18
通常我們只需要用TextView來顯示文字資訊,展示給使用者看,而把點選相應的監聽事件交給Button等控制元件來處理,當然TextView也可以實現點選事件。有時候我們要對TextView中的部分文字進行點選,我們應該如何操作呢?一般有以下三種方式:
1,在佈局檔案中設定TextView的android:autoLink屬性,比如設定android:autoLink=“phone”,則可以點選手機號碼直接撥打電話。android:autoLink設定是否當文字為URL連結/email/電話號碼/map時,文字顯示為可點選的連結。可選值(none/web/email/phone/map/all)
等。這個最簡單,但實現的目標也比較單一,比如只可以打電話或發郵件等。
2,用Html格式中的href鏈,比如:
String content= "<font color=#ff0000> 點選對應文字可以跳轉網頁面" + "</font><a href='http://www.baidu.com'>百度</a>" ; TextView linkTextView= (TextView) findViewById(R.id.linkTextView); textView.setText(Html.fromHtml(content));點選上面的百度二字就可以直接 跳轉到百度網頁。這種方式一般只能跳轉到網頁面面。
3,當我們想實現點選部分文字跳轉到指定的頁面或是實現特定的效果(比如彈出提示對話方塊,Toast資訊等)我們可以使用SpannableString來實現:
TextView textView=(TextView)findViewById(R.id.tv);
SpannableString spanStr = new SpannableString(textView.getText().toString()); NoUnderlineSpan mNoUnderlineSpan = new NoUnderlineSpan();//這句話的目的是去除特殊文字下劃線效果 spanStr.setSpan(new ForegroundColorSpan(Color.parseColor("#00b5f0")), s.length() - 7, s.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);//設定部分文字文字顏色,這裡的文字長度肯定大於7才行實現清除文字下劃線:
public class NoUnderlineSpan extends UnderlineSpan { @Override public void updateDrawState(TextPaint ds) { ds.setColor(ds.linkColor); ds.setUnderlineText(false); } }當然還有其它的方法啦!