android Oreo中的RTL布局错误

android Oreo中的RTL布局错误,第1张

概述自从我在移动设备上升级到 android oreo后,我的RTL支持应用程序无效.它正在将字符串更改为阿拉伯语,但不会更改布局方向.但如果我将同一个RTL转移到低于oreo的任何设备,一切正常.其他人遇到过这个问题?关于这个bug和解决方法还有任何官方声明吗? 下面是我更改区域设置的方法 public static boolean setDefaultLocale(Context context) 自从我在移动设备上升级到 android oreo后,我的RTL支持应用程序无效.它正在将字符串更改为阿拉伯语,但不会更改布局方向.但如果我将同一个RTL转移到低于oreo的任何设备,一切正常.其他人遇到过这个问题?关于这个BUG和解决方法还有任何官方声明吗?

下面是我更改区域设置的方法

public static boolean setDefaultLocale(Context context) {    Resources resources = context.getResources();    PreferenceManager preferenceManager = PreferenceManager.getInstance();    String localLanguage = resources.getConfiguration().locale.getLanguage();    boolean isLanguageChanged = !preferenceManager.getCurrentLanguageCode().equalsIgnoreCase(localLanguage);    if (isLanguageChanged) {        Log.d("",preferenceManager.getCurrentLanguageCode());        Locale locale = new Locale(preferenceManager.getCurrentLanguageCode());        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)            Locale.setDefault(Locale.category.disPLAY,locale);        else            Locale.setDefault(locale);        Configuration config = new Configuration();        config.locale = locale;        resources.updateConfiguration(config,resources.getdisplayMetrics());        ((Activity) context).recreate();    }    return isLanguageChanged;}
解决方法 在onCreate函数中进行简单修复即可添加以下代码:
if (Locale.getDefault().getLanguage()=="ar")     getwindow().getDecorVIEw().setLayoutDirection(VIEw.LAYOUT_DIRECTION_RTL);else     getwindow().getDecorVIEw().setLayoutDirection(VIEw.LAYOUT_DIRECTION_LTR);
总结

以上是内存溢出为你收集整理的android Oreo中的RTL布局错误全部内容,希望文章能够帮你解决android Oreo中的RTL布局错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1133979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存