Android中存在同名字符串资源时,如何强制使用指定资源?
强制Android使用指定字符串资源的解决方案
针对你遇到的库资源覆盖应用默认资源的问题,以下几种方法可以在保留app_name资源名称的前提下解决:
显式指定应用包名引用资源
在所有使用app_name的地方,将原本的@string/app_name替换为@[你的应用包名]:string/app_name。例如你的应用包名是com.example.myapp,就写成@com.example.myapp:string/app_name。这种方式会强制系统加载你应用自身定义的资源,不受库中对应语言资源的影响,哪怕你的应用只有默认的strings.xml。补充应用多语言资源文件
在res目录下创建对应语言的资源文件夹,比如values-es(西班牙语)、values-fr(法语),每个文件夹内新建strings.xml文件,仅定义app_name为My App Name。这样当系统切换到这些语言时,应用自身存在匹配的资源,会优先使用应用内的资源而非库中的。通过Gradle强制设置资源值
在Module级的build.gradle文件中,添加resValue配置来直接指定app_name的值:android { defaultConfig { resValue "string", "app_name", "My App Name" } }这种方式定义的资源优先级高于库中的资源,会覆盖所有场景下的
app_name取值。
内容的提问来源于stack exchange,提问作者Ernesto David Oliva Perez
相关产品推荐
相关产品推荐

