string.xml中的Android引用字符串

Vin*_*oth 7 android android-layout

是否可以在strings.xml中引用字符串

例如:

<string name="application_name">@string/first_name Browser</string>
<string name="first_name">Chrome</string>
Run Code Online (Sandbox Code Playgroud)

根据要求,我可以将first_name的值切换为"Chrome","Firefox"或"Opera".

Moh*_*ikh 17

您可以提供字符串资源的参考,但限制如下

<string name="first_name">Chrome</string>
<string name="application_name">@string/first_name</string> // gives "Chrome"
<string name="application_name">Chrome @string/first_name</string> // gives "Chrome @string/first_name"
<string name="application_name">@string/first_name Chrome </string> // gives error
Run Code Online (Sandbox Code Playgroud)

如果内容以"@"开头,那么Android认为这是一个引用的字符串,请参阅最后一个案例,它会给出错误,因为Android的工具将@和下一个字符串作为字符串的引用名称,它将尝试查找名为"@的资源" string/first_name Chrome"不存在.

您可以使用字符串格式动态分配子字符串<string name="application_name">%1$s browser</string>

使用

String text = String.format(res.getString(R.string.application_name), "Chrome");
Run Code Online (Sandbox Code Playgroud)

  • 可以使用 - `res.getString(R.string.application_name,"Chrome")` 格式化字符串 (2认同)