Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android通過String.format格式化(動態改變)字符串資源的顯示內容

Android通過String.format格式化(動態改變)字符串資源的顯示內容

編輯:關於Android編程

一、實現效果:

\

最近在項目中需要做類似於上圖顯示的效果,裡面的數字和稱謂是動態獲取的,對於這種顯示效果,有如下兩種解決方案來處理:

(1)通過代碼動態設置TextView的內容,比如:

 

/**
	 * 顯示今日狀態
	 * 
	 * */
	private void showTodayState( int totalUser, float upRate, String hornor, char level ){
		StringBuilder todayStateStr = new StringBuilder( );
		todayStateStr.append( 您正與 );
		todayStateStr.append( totalUser );
		todayStateStr.append( 位朋友在一起游戲,本周排名提升了 );
		todayStateStr.append( upRate );
		todayStateStr.append( ,獲得 );
		todayStateStr.append( hornor );
		todayStateStr.append( 的稱號,等級為 );
		todayStateStr.append( level );
		todayStateStr.append( ! );
		
		mTodayStateTxt.setText( todayStateStr );
	}
然後調用該方法:

 

 

showTodayState( 1234567, 68.376f, 爆頭大師, 'B' );

(2)在string.xml文件中定義一個字符串,然後在代碼中通過String.format方法來格式化該字符串,比如:

 

 

您正與%1$d位朋友在一起游戲,本周排名提升了%2$.3f,獲得%3$s的稱號,等級為%4$c!
在代碼中做如下定義:

 

 

/**
	 * 顯示今日狀態
	 * 
	 * */
	private void showTodayState( int totalUser, float upRate, String hornor, char level ){
		String todayStateStr = String.format( getResources( ).getString( R.string.today_state_string), totalUser, upRate, hornor, level );
		mTodayStateTxt.setText( todayStateStr );
	}
本文介紹第二種處理方式,因為顯然第二種處理方式更方便,特別是需要動態改變多個顯示狀態的時候。

 


二、字符串資源格式化詳細介紹:

 

您正與%1$d位朋友在一起游戲,本周排名提升了%2$.3f,獲得%3$s的稱號,等級為%4$c!
從上面這行字符串的定義可以看出,格式化字符串資源的格式為:

 

%+參數位置+$+格式化類型,其中:

參 數 位 置:從1開始依次編號,String.forma方法的第二個參數為格式化的第一個參數,後面依次遞增;

格式化類型:

s 字符串

f 浮點數

d 整型數

c 字符類型

其實懂點C語言的朋友一看就知道和printf的打印輸出格式化差不多。

 

三、注意事項:

1、在string.xml文件中定義好格式化的字符串資源,通過代碼動態設置字符串內容時,必須確保String.format方法裡面的參數不少於字符串資源中定義的格式化參數個數(實踐證明多了參數是不會報異常的),比如在上面的例子中字符串有四個格式化參數,如果代碼寫成這樣:

showTodayState( int totalUser, float upRate, String hornor )//少了level參數
則會報如下異常:

 

\

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved