是否可以在仍然使用Android资源的同时以编程方式更改应用程序的语言?

如果没有,是否可以请求使用特定语言的资源?

我想让用户从应用程序更改应用程序的语言.

推荐答案

这是可能的.您可以设置区域设置.然而,我不建议这样做.我们在早期阶段就try 过,它基本上是在对抗体制.

我们对更改语言有相同的要求,但决定接受UI应该与Phone UI相同的事实.它是通过设置地点来工作的,但是太麻烦了.根据我的经验,您必须在每次进入活动(每个活动)时设置它.如果您仍然需要这个代码,这里有一个代码(同样,我不建议这样做)

Resources res = context.getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.setLocale(new Locale(language_code.toLowerCase())); // API 17+ only.
// Use conf.locale = new Locale(...) if targeting lower versions
res.updateConfiguration(conf, dm);

如果您有语言特定内容-您可以根据设置进行更改.


update on 26th of march 2020

    public static void setLocale(Activity activity, String languageCode) {
        Locale locale = new Locale(languageCode);
        Locale.setDefault(locale);
        Resources resources = activity.getResources();
        Configuration config = resources.getConfiguration();
        config.setLocale(locale);
        resources.updateConfiguration(config, resources.getDisplayMetrics());
    }
  • 注意:语言代码不能获取‘-’&;只能是2个小写字母

Android相关问答推荐

我遇到了一个HashMaps对象没有存储在Firebase数据库中的问题.HashMap的一个对象put方法未被存储

处理Room数据库中的嵌套实体

约束布局:垂直链中的视图应将内容包裹到空间的1/3

为什么Ionic-checkbox不总是刷新Android上的视图?

为什么当我在装有Firebase的安卓系统中登录苹果时,收到的邮箱为空?

如何更新Kotlin中的显示?

如何在Android Studio的LinearLayout中禁用阴影

从片段导航回来

Kotlin - 在继续之前如何等待这个协程完成?

在java android studio项目上安装mapbox

在模块 jetified-kotlin-stdlib-1.8.10 中发现重复的类 kotlin.random.jdk8,带有启动基准

React Native Android 应用程序在调试模式下运行良好,但当我们发布 apk 时,它会生成旧版本的应用程序

在 Google Play 中将用户从开放测试转移到生产的过程是怎样的?

JCenter 是否永久关闭(10 月 31 日)?

Jetpack Compose Material3 禁用 ListItem

Jetpack Compose:SpanStyle 的 TextAlign(垂直居中)

清洁架构中的服务

如何在 Jetpack Compose 中为中心对齐设置动画?

使 Compose LazyColumn 的最后一项填满屏幕的其余部分

为什么我不能在屏幕外拿任何物体