如何在安卓系统中动态更改语言环境和键盘布局?

3
我正在开发一个应用程序,使用三种语言的文本。英语、库尔德语和阿拉伯语。我试图在用户更改语言时动态更改布局。我有一个设置屏幕,用户可以更改语言,但是这并不是从系统设置中更改语言,而是从我的应用程序中更改。例如,如果我从库尔德语切换到英语或反之,则布局应更改为RTL到LTR。我尝试使用onConfigurationChanged(),但它没有被触发。
Changing locale: Force activity to reload resources?中找到了答案。
我尝试过以下方法,但都没有成功:
  1. Android: locale(system Language) change effect my application layouts
  2. Android Localization problem: Not all items in the layout update properly when switching locales
  3. Trying to change Android Locale on the fly
  4. http://www.c-sharpcorner.com/UploadFile/1e5156/how-to-change-locale-of-an-application-dynamically-in-androi/
我尝试使用onResume(),它被触发了,但是当语言更改时布局没有改变。我使用以下代码更改区域设置。LocaleSingleton是我创建的一个类,用于保存Configuration的实例。
@Override
    protected void onResume() {
        getResources().updateConfiguration(LocaleSingleton.getInstance().getConfig(), getResources().getDisplayMetrics());
        AsyncData data = new AsyncData();
        data.execute(String.valueOf(id), Constants.SERVER + "ad_detail.php");

        super.onResume();
    }

任何帮助都将不胜感激。提前致谢。 编辑:我也尝试在onResume()中重新启动活动,但只得到一个黑屏。再次感谢。

抱歉,我是指onConfigurationChanged()。 - Pankaj Agarwal
你尝试过针对这个问题发布的解决方案了吗? - Ted Hopp
1个回答

0

将此代码添加到你的清单文件(activity)中

<activity
            android:name=".YourActivity"
            android:configChanges="orientation|keyboardHidden|screenSize" >
        </activity>

基本上,方向会在更改方向后强制执行onConfigurationChanged(),而在4.0之后,还需要屏幕大小。我不确定,但我猜键盘隐藏会在更改方向时强制关闭键盘。 - Barışcan Kayaoğlu
没起作用?这是所有安卓设备都使用的配置。如果不起作用,你可能在设备设置中禁用了屏幕旋转。 - Barışcan Kayaoğlu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接