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

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

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

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

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

最佳答案

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

但是,无论如何,如果 Android 无法正确地重新创建您的 Activity ,您始终可以通过在 AndroidManifest.xml 中设置 “android:configChanges” 来为您的 Activity ,然后在此类 Activity 中监听 onConfigurationChanged(Configuration newConfig) 方法:

AndroidManifest.xml中:

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

在您设置android:configChangesActivity中:

@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
    }
}

关于Android - 多次切换 RTL 与 LTR 时布局方向错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41644936/

相关文章:

java - android 到 sqlserver 的连接字符串

Android:隐藏设备的音量变化条?

java - Activity com.example.mediastore.LoginActivity 已泄漏窗口 com.android.internal.policy.impl.PhoneWindow$DecorView

android - 是否可以根据语言在 TextView 之间切换?

internet-explorer-9 - Internet Explorer 9(和 10)正在向后渲染我的圆 Angular

android - 自定义 'actionBarTabStyle' 不会覆盖 AppCompat 主题

android - 调用两种类型的 Intent

java - Webview显示本地HTML页面

java - Android 为跨文本添加填充

带占位符的 Android RTL 翻译