string.xml中的Android引用字符串

string.xml中的Android引用字符串,android,android-layout,Android,Android Layout,是否可以在strings.xml中引用字符串 例如: @string/first\u name浏览器 铬 根据需要,我可以将first_name的值切换为“Chrome”、“Firefox”或“Opera”。您可以给出字符串资源的引用,但限制如下 <string name="first_name">Chrome</string> <string name="application_name">@string/first_name</string>

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

例如:

@string/first\u name浏览器
铬

根据需要,我可以将first_name的值切换为“Chrome”、“Firefox”或“Opera”。

您可以给出字符串资源的引用,但限制如下

<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

Strings.xml中的字符串是固定的,不能在运行时更改。您必须为每种情况定义一个字符串,并在代码中进行切换

String name;

if (/* browser is Chrome*/) {
    name = getString(R.string.first_name_chrome);
} else if (/* browser is Firefox */) {
    name = getString(R.string.first_name_firefox);
}
但是,您可以让应用程序自动为不同的语言选择正确的字符串。这可以通过将字符串文件放置在本地化文件夹(值en、值fr、值pl等)中来实现


您可以在

上阅读有关本地化的更多信息是的,您可以不用添加任何Java/Kotlin代码,使用这个小库,只允许您在构建时使用XML。因此,对于您的情况,您必须如下设置字符串:

<string name="template_application_name">${first_name} Browser</string>
<string name="first_name">Chrome</string>
${first\u name}浏览器
铬
运行gradle插件后,您将得到以下结果:

<string name="application_name">Chrome Browser</string>
Chrome浏览器
这是指向库的链接:


免责声明:我是此库的作者。

可能的重复可能的重复使用“R.string”而不是“R.string”是错误还是正确的用法?可以使用-
res.getString(R.string.application_name,“Chrome”)格式化字符串。
<string name="template_application_name">${first_name} Browser</string>
<string name="first_name">Chrome</string>
<string name="application_name">Chrome Browser</string>