1. 程式人生 > >android textview 給指定字改變顏色和新增點選事件

android textview 給指定字改變顏色和新增點選事件

使用 SpannableString :

TextView textview=new TextView(context);

String  str="指定字改變顏色和新增點選事件";

SpannableString spannableString=new SpannableString(str);

//   Spanned.SPAN_INCLUSIVE_EXCLUSIVE 從起始下標到終了下標,包括起始下標
//   Spanned.SPAN_INCLUSIVE_INCLUSIVE 從起始下標到終了下標,同時包括起始下標和終了下標
//   Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 從起始下標到終了下標,但都不包括起始下標和終了下標
//   Spanned.SPAN_EXCLUSIVE_INCLUSIVE 從起始下標到終了下標,包括終了下標

方法一://設定顏色

spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#999999")),start,end,Spanned.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

方法二://或者繼承ClickableSpan 重寫updateDrawState()方法

public class NoLineCllikcSpan extends ClickableSpan {

        public NoLineCllikcSpan() {
            super();
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            /**設定顏色**/
            ds.setColor(ds.linkColor);
            /**設定無下劃線**/
            ds.setUnderlineText(false);
        }

        @Override
        public void onClick(View widget) {
        }
    }

spannableString.setSpan(new NoLineCllikcSpan() {
                    @Override
                    public void onClick(View widget) {

                    /**  指定字的點選事件 */
                       
                    }
                }, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

textview.setText(spannableString);

textview.setMovementMethod(LinkMovementMethod.getInstance());//想要實現指定文字的點選事件,需要新增該方法