1. 程式人生 > >【Android 】TextView 區域性文字變色

【Android 】TextView 區域性文字變色

TextView 對於富文字效果的實現支援不支援呢?比如“區域性文字顏色的變動”,“區域性字型的變動”

一、需求效果

這裡寫圖片描述

二、解決方案

針對這類問題,Android提供了 SpannableStringBuilder,方便我們自定義富文字的實現。

  textView = (TextView) findViewById(R.id.textview);
  SpannableStringBuilder builder = new SpannableStringBuilder(textView.getText().toString());

  //ForegroundColorSpan 為文字前景色,BackgroundColorSpan為文字背景色
  ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED);
  ForegroundColorSpan whiteSpan = new ForegroundColorSpan(Color.WHITE);
  ForegroundColorSpan blueSpan = new ForegroundColorSpan(Color.BLUE);
  ForegroundColorSpan greenSpan = new ForegroundColorSpan(Color.GREEN);
  ForegroundColorSpan yellowSpan = new ForegroundColorSpan(Color.YELLOW);


  builder.setSpan(redSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  builder.setSpan(whiteSpan, 1, 2, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
  builder.setSpan(blueSpan, 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  builder.setSpan(greenSpan, 3, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  builder.setSpan(yellowSpan, 4,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

  textView.setText(builder);

除了上述程式碼中使用的 ForegroundColorSpanBackgroundColorSpan之外,還有以下這些Span可以使用:

AbsoluteSizeSpan(int size) —— 設定字型大小,引數是絕對數值,相當於Word中的字型大小

RelativeSizeSpan(float proportion) —— 設定字型大小,引數是相對於預設字型大小的倍數,比如預設字型大小是x, 那麼設定後的字型大小就是x*proportion,這個用起來比較靈活,proportion>1就是放大(zoom in), proportion<1就是縮小(zoom out)

ScaleXSpan

(float proportion) —— 縮放字型,與上面的類似,預設為1,設定後就是原來的乘以proportion,大於1時放大(zoon in),小於時縮小(zoom out)

BackgroundColorSpan(int color) —— 背景著色,引數是顏色數值,可以直接使用android.graphics.Color裡面定義的常量,或是用Color.rgb(int, int, int)

ForegroundColorSpan(int color) —— 前景著色,也就是字的著色,引數與背景著色一致

TypefaceSpan(String family) —— 字型,引數是字型的名字比如“sans”, “sans-serif”等

StyleSpan(Typeface style) —— 字型風格,比如粗體,斜體,引數是android.graphics.Typeface裡面定義的常量,如Typeface.BOLD,Typeface.ITALIC等等。StrikethroughSpan—-如果設定了此風格,會有一條線從中間穿過所有的字,就像被劃掉一樣

三、動手試試

比如實現下圖中TextView的樣式

這裡寫圖片描述**

仿照上面的寫法,程式碼很少就出來啦:

TextView tv = (TextView)view.findViewById(R.id.toast_text);

String str1 = "提交成功!\n積分";
String str2 = "+" + score1;
String str3 = "!稽核通過後再";
String str4 = "+" + score2;

SpannableStringBuilder builder = new SpannableStringBuilder(str1 + str2 + str3 + str4 + "!");
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffa200")),
        str1.length(), (str1 + str2).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffa200")),
        (str1 + str2 + str3).length(), (str1 + str2 + str3 + str4).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

tv.setText(builder);

相關推薦

Android TextView 區域性文字變色

TextView 對於富文字效果的實現支援不支援呢?比如“區域性文字顏色的變動”,“區域性字型的變動” 一、需求效果 二、解決方案 針對這類問題,Android提供了 SpannableStringBuilder,方便我們自定義富文字的實現。 text

Android TextView設定個別字型樣式

1 SpannableString msp = new SpannableString("測試"+XM+"更換當前號碼將從手機發送一條普通簡訊進行驗證"); 2 msp.setSpan(new ForegroundColorSpan(Color.BLUE), 2, XM.length()+2, Span

Android設定TextView部分文字變色及點選事件

首先要想實現文字變色以及點選,都需要使用到SpannableStringBuilder,例項化該類也很簡單,只需將你想要處理的字串當做引數 SpannableStringBuilder spannable = new SpannableStringBuilder(conte

AndroidTextView設定段落間距

TextView只提供設定行距的方法,沒有提供段落間距的方法,但是提供了一個 SpannableString 類來給TextView設定各種效果, 如圖: 其中一個給文字替換為圖片的效果給我帶來了靈感, 我可以用一個圖片(最後換成一個寬1px,指定

AndroidTextView中不同大小字型如何上下垂直居中?

前言 在客戶端開發中,我們往往需要對一個TextView的文字的部分內容進行特殊化處理,比如加粗、改變顏色、加連結、下劃線等。iOS為我們提供了AttributedString,而Android則提供了SpannableString。 在Android的an

android在Service中新建TextView

top 結果 turn parse layout onstop xtend relative ret 在Activity中new TextView的時候,發現傳入的參數是Context,不是必須為Activity,就想:在Service中新建一個View的話能否正常使用?

Android一個TextView顯示不同顏色字型

tv.setText(Html.fromHtml( "<font color=#FF504B>"+Str1+"</font> "+ "<font color=#696969>"+Str2+"</font>")); 利用ht

Android下拉列表、拖動條、星級評分條與標籤文字的觸控事件

下拉列表、拖動條與星級評分條都是Android中的一些基本元件。 寫一個小小的程式,來說明其用法。 如下圖: 當下拉列表有值選定之後,則彈出相應的提示資訊,哪個值被選擇。星際評分條也一樣,獲取使用者選擇的星數。 標籤文字被觸控則顯示其被觸控。 滑動條,在拖動的時候,則在標

Android邊框旁的文字實現模糊效果

【問題】 如何實現幾行文字的最上面1行和最下面1行的文字為漸變模糊的效果; 【效果圖】 【思路】 簡單來說:用一個漸變的透明的View來覆蓋兩邊的文字區域;具體來說:(這裡只考慮[區域2])最

Android動態漸變色的扇形

看到CSDN這一論壇的問題,好奇地去把它解決了。看了一下時間都是一年前了。 MyActivity.java package com.example.abcd; import android.annotation.SuppressLint; import andro

Android修改Tablayout中標籤文字的樣式

我們在用TabLayout和ViewPager做可以滑動的標籤和碎片時,標籤的樣式一般只能設定文字顏色、滑塊的顏色和厚度值 如果我想設定文字的大小和加粗,在這必須用到 app:tabText

Android自定義View-為文字新增動態閃動效果

一、概述 昨天我簡單的為View添加了一個邊框,邊框的顏色和大小都是可以自行設定的。今天我想在文字方面做一些簡單的修改,我想讓文字閃動起來。我們可以利用LinearGradient的Shader渲染器和Matrix矩陣來實現閃動效果。 二、知識說明

AndroidAndroid與伺服器互動 POST上傳多個圖片檔案、文字內容 GET下載圖片

這裡伺服器端採用的是php解析內容 HTTP請求   HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。用於資料互動的最基本方法一般為GET、POST、PUT、DELETE。對

android設定View字型點選變色和邊框背景設定

1.設定字型變色 selector_orange_white.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/a

AndroidAndroid聊天機器人實現

小米 div bottom 曾經 圖靈 .9.png sdn http 歡迎界面 昨天看到一個Android視頻教程講圖靈機器人。那個API接口用起來還是挺方便的,就準備自己動手做一個了。另外自己還使用了高德地圖的API接口用於定位(曾經用過高德的接口,比X度方便) 大

AndroidEclipse自己主動編譯NDK/JNI的三種方法

comm tro mman gnu tex android項目 syn color ng- 【Android】Eclipse自己主動編譯NDK/JNI的三種方法 SkySeraph Sep. 18th 2014 Email:[email protec

androiduses-permission和permission具體解釋

.com 新的 -i weight bsp htm fin article 程序 1.<uses-permission>: 官方描寫敘述: If an application needs access to a feature prote

Android自己定義圓形ImageView(圓形頭像 可指定大小)

代碼實現 err float avi rim war tor pos dsm 近期在仿手Q的UI,這裏面常常要用到的就是圓形頭像,看到 在android中畫圓形圖片的幾種辦法 這篇文章,了解了制作這樣的頭像的原理.只是裏面提供的方法另一個不足的地方就是

Android獲取控件的寬和高

height string -a @override parent popu tle post spa 有時候我們須要在Activity的時候獲取控件的寬和高來做一些操作,以下介紹三種獲取寬和高的方式: 1. onWindowFoc

AndroidgetActionBar()為null的解決方法總結

andro 調用 種類 ref code trac page 沒有 stack 前言 在使用 ActionBar的時候,有時候會爆出空指針異常,這是由於應用沒有獲取到 ActionBar 導致的,而導致應用沒有獲取到 ActionBar 的原因比較多。