You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android的strings.xml中动态引用app_name实现应用名称复用?

Android统一维护应用名称,动态引用app_name的实现方案

要实现仅维护app_name一处,其他所有地方自动同步应用名称,核心是利用Android字符串资源的原生引用机制,分三种场景处理:


1. 静态文案嵌入应用名称(无需代码修改)

如果注册页、欢迎语这类文案是固定格式(比如“欢迎来到XXX”),直接在strings.xml里用<xliff:g>标签引用app_name,Android会自动解析渲染:

<string name="app_name">Wonder11</string>

<!-- 注册页文案 -->
<string name="register_title">注册成为<xliff:g id="app_name">@string/app_name</xliff:g>用户</string>

<!-- 欢迎语 -->
<string name="welcome_message">欢迎来到<xliff:g id="app_name">@string/app_name</xliff:g></string>

后续修改app_name时,所有引用的文案会自动同步更新。


2. XML布局文件中直接引用

如果是TextView等控件需要单独显示应用名称,或者引用上面定义好的带应用名的文案,直接用资源ID引用即可:

<!-- 单独显示应用名称 -->
<TextView
    android:id="@+id/tv_app_title"
    android:text="@string/app_name" />

<!-- 显示带应用名的欢迎语 -->
<TextView
    android:id="@+id/tv_welcome"
    android:text="@string/welcome_message" />

3. 代码中动态组合文案(动态场景)

如果需要根据业务逻辑动态拼接文案,先获取app_name的字符串值,再通过格式化或拼接方式使用:

Kotlin示例

// 获取应用名称
val appName = getString(R.string.app_name)

// 推荐方式:用strings.xml里的格式化文案(便于多语言适配)
binding.tvRegisterDesc.text = getString(R.string.register_title_format, appName)
// 对应的strings.xml定义:<string name="register_title_format">注册成为%s用户</string>

// 简单场景:直接拼接
binding.tvWelcome.text = "欢迎使用$appName"

Java示例

// 获取应用名称
String appName = getString(R.string.app_name);

// 推荐方式:格式化文案
binding.tvRegisterDesc.setText(getString(R.string.register_title_format, appName));

// 简单场景:直接拼接
binding.tvWelcome.setText("欢迎使用" + appName);

关键注意点

  • 彻底清理所有硬编码的“Wonder11”,确保所有应用名称引用都指向@string/app_name
  • 新增文案时统一遵循上述规则,避免重复硬编码
  • 多语言适配时,仅需修改对应语言文件夹下strings.xml的app_name,所有引用自动同步

内容的提问来源于stack exchange,提问作者SaAsh Techs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:17:45