1. 程式人生 > >設定TextView部分文字下劃線並響應點選事件(SpannableString)

設定TextView部分文字下劃線並響應點選事件(SpannableString)

實現效果

這裡寫圖片描述

textview中改變《服務條款》的顏色、增加下劃線。

實現關鍵點:
SpannableString的使用

 SpannableString spanText=new SpannableString(getString(R.string.d_terms));
        spanText.setSpan(new ClickableSpan() {

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.RED);       //設定檔案顏色
ds.setUnderlineText(true); //設定下劃線 } @Override public void onClick(View view) { final Snackbar snackbar = Snackbar.make(warnText,"別點我",Snackbar.LENGTH_LONG); snackbar.show(); snackbar.setAction("取消"
, new View.OnClickListener() { @Override public void onClick(View v) { snackbar.dismiss(); } }); } }, spanText.length() - 6, spanText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); warnText.setHighlightColor(Color.TRANSPARENT); //設定點選後的顏色為透明,否則會一直出現高亮
warnText.setText(spanText); warnText.setMovementMethod(LinkMovementMethod.getInstance());//開始響應點選事件

原理就是用了ClickableSpan設定texitview中部分文字(下標)的點選效果,使用是不要忘記新增(開始自己忘了)

 warnText.setMovementMethod(LinkMovementMethod.getInstance());//開始響應點選事件

如果想詳細瞭解SpannableString可以參考下面連結,很全的講解: