Android Span的簡單使用


 Spanable中的常用常量:
 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含start和end所在的端點                 (a,b)
 Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start,但包含end所在的端點       (a,b]
 Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含start,但不包含end所在的端點          [a,b)
 Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含start和end所在的端點                       [a,b]

1.改變字體的不同顏色

  String text = String.format("¥%1$s  門市價:¥%2$s", 18.6, 22);
        SpannableStringBuilder style = new SpannableStringBuilder(text);
        int z = text.lastIndexOf("門");
        /**
         *  ForegroundColorSpan設置前景的顏色
         */
        style.setSpan(new ForegroundColorSpan(Color.RED), 0, 2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );
        style.setSpan(new ForegroundColorSpan(Color.YELLOW), 2, 4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );
        style.setSpan(new ForegroundColorSpan(Color.GREEN), 4, 6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );
        textView2.setText(style);

2.改變字體大小 顏色 加換行

  /**
         * 改變字體大小  顏色 加換行
         */
        Spannable span = new SpannableString("2017"+"\n"+"-03-02");
        span.setSpan(new RelativeSizeSpan(1.5f), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        span.setSpan(new RelativeSizeSpan(3.0f), 5, 11, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        span.setSpan(new ForegroundColorSpan(Color.RED), 0, 11, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        /**
         * BackgroundColorSpan設置背景色,為0代表不設置背景色默認為activity背景色
         */
        //span.setSpan(new BackgroundColorSpan(Color.WHITE), 0, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        span.setSpan(0, 0, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        textView3.setText(span);

3.帶有URL的TextView文本

        String msg = "帶有URL的TextView文本《點擊這里跳轉》";
        SpannableString smp = new SpannableString(msg);
        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, Main2Activity.class));
            }
            @Override
            public void updateDrawState(TextPaint ds) {
                /**
                 * 這里如果設置為false則不帶下划線,true帶有下划線
                 */
                ds.setUnderlineText(false);
            }
        } ;

        /**
         * 設置點擊的范圍
         */
        smp.setSpan(clickableSpan, msg.indexOf("《") + 1, msg.lastIndexOf("》"), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        /**
         * 設置前景色
         */
    smp.setSpan(new ForegroundColorSpan(Color.parseColor("#0AC3BC")), msg.indexOf("《"), msg.lastIndexOf("》") + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    textView4.setText(smp);
        /**
         * 設置添加鏈接
         */
        textView4.setMovementMethod(LinkMovementMethod.getInstance());

4.帶有下划線的文本

        String content="帶有下划線的文本";
        SpannableString ssb = new SpannableString(content);
        ssb.setSpan(new UnderlineSpan(), 0, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
        textView5.setText(ssb);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM