当我以编程方式更改我的应用语言时,如何保护我的应用ui更改?

时间:2019-02-19 17:04:01

标签: android kotlin

我正在开发两种语言的应用程序:英语和阿拉伯语。为此,我在应用程序中有一个按钮可以通过编程方式更改语言。我可以通过单击一个按钮来更改它,但是当我将其英语更改为阿拉伯语时,我的用户界面也从左到右更改,但是我希望两个用户界面都保持相同。我该怎么做? 我正在使用这种方法更改语言  私有静态上下文updateResourcesLegacy(上下文上下文,字符串语言){

    Locale locale = new Locale(language);
    Locale.setDefault(locale);

    Resources resources = context.getResources();

    Configuration configuration = resources.getConfiguration();
    configuration.locale = locale;

    resources.updateConfiguration(configuration, resources.getDisplayMetrics());

    return context;
}

它有效,但是ui反映了。

2 个答案:

答案 0 :(得分:2)

尝试在android:supportsRtl="false"标签内的{strong> manifest.xml 文件中添加<application>。这样可以解决UI方向问题,但可能会不利地影响您的文本方向,因为阿拉伯语必须从右向左进行操作。

另一种解决方案是在活动中添加android:layoutDirection="ltr"

答案 1 :(得分:1)

所以您不希望在应用程序中支持RTL?在清单中尝试android:supportsRtl =“ false”。

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="false"
android:theme="@style/AppTheme">
...
</application>