天天看點

android SpannableString常用效果

在Android 中實作字型的一些特殊效果一般都是用SpannableString 來實作的OK,先來張圖

android SpannableString常用效果

在此實作之前先說明幾個重要的屬性

1.實作前景色

//設定前景色
    private SpannableString setForegroundColorSpan(){

        SpannableString spannableString =new SpannableString("這條文字前面前景色");
        spannableString.setSpan(new ForegroundColorSpan(Color.BLUE),, ,     Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        return  spannableString;
    }
           

2.設定字型的超連結

// 設定超連結
    private SpannableString setLinkLine(){

        SpannableString spannableString =new SpannableString("這是一個連結");

        URLSpan urlSpan =new URLSpan("http://www.baidu.com");

        spannableString.setSpan(urlSpan,,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        mTextView.setMovementMethod(LinkMovementMethod.getInstance());
        return  spannableString;
    }
           

3.設定一個下劃線的效果一般也可同過加載HTML的u标簽來實作這裡就不贅述

//設定下劃線   也可以用HTML 的 u标簽來顯示
    private SpannableString setUnderline(){

        SpannableString spannableString =new SpannableString("我是下劃線");

        UnderlineSpan underlineSpan =new UnderlineSpan();

        spannableString.setSpan(underlineSpan,,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);


        return  spannableString;

    }
           

4.設定删除線

private SpannableString setDeleteLine(){
        SpannableString spannableString =new SpannableString("我是删除線");

        StrikethroughSpan deleteLine =new StrikethroughSpan();

        spannableString.setSpan(deleteLine,,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        return  spannableString;
    }
           

5.設定可以點選的字

//在點選的操作時還需要加入

mTextView.setMovementMethod(LinkMovementMethod.getInstance());

private SpannableString setClickSpan(){

        SpannableString spannableString =new SpannableString("點個看看");

        ClickableSpan  clickableSpan  =new ClickableSpan() {
            @Override
            public void onClick(View view) {

                Toast.makeText(ColorTextActivity.this,"click",Toast.LENGTH_SHORT).show();
                mTextView.setHighlightColor(Color.TRANSPARENT);  //消除變色後字型變色
            }


            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);

                ds.setColor(Color.GREEN);  // 設定可點選字型的顔色

                ds.setUnderlineText(false);  //設定沒有下劃線

                ds.clearShadowLayer();
            }
        };

        spannableString.setSpan(clickableSpan,,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        return spannableString;
    }
           

6.是SpannableStringBuilder 的一個用法

private void setSpannableBuilder(){

         SpannableStringBuilder builder =new SpannableStringBuilder();

         builder.append(setForegroundColorSpan());

         builder.append(setLinkLine());

         builder.append(setUnderline());

         builder.append(setDeleteLine());

         builder.append(setClickSpan());


         mTextView.setText(builder); // 将内容顯示在textview上
     }
           

OK,打完收工