Android開發中Android String 值動態替換教程

今天在項目中看到同事在 values-strings 中定義瞭一個

(%1$s秒)

覺得有點奇怪,在代碼中看到引用它是顯示倒計時秒數的。

不明覺厲。

於是上網查瞭一下資料,瞭解瞭 %n$ms %n$md %n$mf 的用法。

先上結論:

%n$ms:代表輸出的是字符串,n代表是第幾個參數,設置m的值可以在輸出之前放置空格 %n$md:代表輸出的是整數,n代表是第幾個參數,設置m的值可以在輸出之前放置空格 %n$mf:替換的是浮點數,n是第幾個參數,m在浮點類型之前設置幾個空格 比如m=20.2表示在浮點類型之前設置20個空格,浮點類型保留2位小數

這種寫法,非常適用於一些需要動態替換數據進行顯示的功能。

然後看一下代碼:

1. 先在 values-strings 中定義好要進行替換的值

我叫%1$s,現在生活在%2$2s
我今天吃瞭%1$4d個蘋果
我今天花瞭%1$15.2f元

我定義瞭三個 string 值,三種類型都演示到。

首先,person 是字符串類型值輸出,有兩個值要進行替換,分別用 %1 和 %2 進行參數標註。並且,參數2的值前有兩個空格。

count 是整數型輸出,替換一個值,前面有4個空格。

money 是浮點型輸出,替換一個值,前面有四個空格,並且值保留兩位小數。

2. 代碼中引用

先定義三個 Textview:

private TextView mTvString;
private TextView mTvNum;
private TextView mTvFloat;

再給 Textview 賦值:

mTvString = (TextView) findViewById(R.id.tv_String);
mTvString.setText(String.format(getString(R.string.person), "蔫巴登", "沈陽"));

mTvNum = (TextView) findViewById(R.id.tv_num);
mTvNum.setText(String.format(getString(R.string.count), 3));

mTvFloat = (TextView) findViewById(R.id.tv_float);
mTvFloat.setText(String.format(getString(R.string.money), 195.1255));

OK瞭,這樣就已經好瞭。

看一下結果:
ss

You May Also Like