1. 程式人生 > >使用String.format和CDATA實現一個常見的效果

使用String.format和CDATA實現一個常見的效果

效果圖:
效果圖
一個字串中某些字元改變顏色或者字型大小的需求,之前一直使用Spannable處理,碰到這個發現如果使用Spannable就有點不方便了;這裡使用了String.format來動態格式化String資源,使用CDATA來控制特定位置的樣式;具體程式碼如下:

String.xml:

<resources>
    <string name="app_name">Test</string>
    <string name="content">本月應發工資:<![CDATA[<font color="#ff0000">%1$d</font>]]> 實發工資:<![CDATA[<font color="#ff0000">%2$d</font>]]>元(包含獎金<![CDATA[<font color="#ff0000">%3$d</font>]]>元)</string>
</resources>

MainActivity:

package com.example.administrator.test;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        tv.setText(Html.fromHtml(String.format(getResources().getString(R.string.content),10,20,10)));
    }
}
  • String.format 格式化對應的轉換符如下表
轉換符 說明
%s 字串型別
%c 字元型別
%b 布林型別
%d 整數型別(十進位制)
%x 整數型別(十六進位制)
%o 整數型別(八進位制)
%f 浮點型別
%a 十六進位制浮點型別
%e 指數型別
%g 通用浮點型別(f和e型別中較短的)
%h 雜湊碼
%% 百分比型別
%n 換行符
%tx 日期與時間型別(x代表不同的日期與時間轉換符