使用String.format和CDATA實現一個常見的效果
阿新 • • 發佈:2018-11-14
效果圖:
一個字串中某些字元改變顏色或者字型大小的需求,之前一直使用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代表不同的日期與時間轉換符 |