Android - 多次切换RTL与LTR时的布局方向错误

时间:2017-01-13 23:16:08

标签: android android-layout right-to-left android-databinding

当我在EN和AR之间切换我的应用程序语言时(在运行时),通过从LTR移动到RTL,视图表现正常但是当我开始通过多次切换语言来强调应用程序时,布局方向变得很小,我得到了RTL应用程序应显示LTR元素时的元素。有时布局方向不再刷新。

作为解决方法,我必须以编程方式为这些视图设置布局方向。 binding.spinner.setLayoutDirection(LocaleUtil.isRtl(this) ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);

你有什么想法吗?我试图避免这种解决方法:(如果可以完全依赖Android UI渲染。

2 个答案:

答案 0 :(得分:2)

我无法想象一个用户会多次切换语言然后在每次更改时返回应用程序:)

但是,无论如何,如果Android无法正确地重新创建您的活动,您始终可以通过在 AndroidManifest.xml <中设置&#34; android:configChanges&#34; 来手动执行此操作/ em>用于您的活动,然后在此类活动中侦听 onConfigurationChanged(Configuration newConfig)方法:

AndroidManifest.xml

<activity android:name=".MyActivity"
          android:configChanges="layoutDirection">

活动中为其设置了 android:configChanges

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (newConfig.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
        // change directions for you views to RTL
    } else {
        // change directions for you views to LTR
    }
}

答案 1 :(得分:1)

确保supportsRtl =“true”

<application
    android:supportsRtl="true"
    android:name=".App"
    android:icon="@drawable/news"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
</application>