2017-07-24 81 views
0

此問題涉及Android中的String佔位符機制。有很多關於「我如何使用佔位符」的帖子,但我的問題是安靜的不同(或者我只是愚蠢的),我無法在網上找到答案。使用xml中的初始字符串時隱藏字符串佔位符

當我通過xml文件引用它時,如何隱藏String資源中的佔位符?

的一點是,如果我有一個像

<string name=mystring>There comes the placeholder: %s</string> 

字符串資源,我用它在我的whatever.xml文件,並設置一個TextView到Android的文字:=「@字符串/ MyString中「那麼它確實顯示」來了佔位符:%s「。但你可以想象我想避免用戶看到「%s」;-)

那麼我們該怎麼做呢?

乾杯

回答

0

%s在您的字符串是不是隻是一個佔位符,它是一個格式說明。你可以在這裏閱讀所有關於他們:https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

簡短的回答你的問題是,它是不可能隱藏從用戶此格式說明。但是,這是因爲字符串中帶有格式說明符的不應該是作爲android:text屬性的簡單參數。

正確的使用這些字符串資源是填充您TextView的在運行時使用Resources.getString(int id, Object... formatArgs)(或Activity.getString(int id, Object... formatArgs))文本(在Java中),此時你會真正的價值傳遞給代入您的字符串。

使用從你的例子命名,你可能有這樣的事情:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TextView myTextView = (TextView) findViewById(R.id.mytextview); 
    myTextView.setText(getString(R.string.mystring, "real value")); 
} 

注意,您可以使用tools:text="@string/mystring"在佈局中看到在設計時的字符串(雖然這仍然會包含任何格式說明)。但真正的用戶永遠不會看到這個文本。

+0

好吧,有人說這是不可能的滿足我的需求:D我想我只是使用「」爲真正的價值參數,因爲我最初需要的價值是空的..這是這個問題的原因...... – Zuop