Ben*_*ane 27 android arabic right-to-left
我正在尝试在我的应用程序中添加RTL语言支持(特别是现在的阿拉伯语).我也会支持英语.我做了什么:
android:supportsRtl="true"到我的应用程序标签中AndroidManifest.xml起初我手动进行了这些更改,然后我使用了Android Studio的"重构 - >添加RTL支持尽可能..."菜单项.
当我预览我的布局文件时,我可以看到RTL预览正确地镜像了UI; 但是,即使我使用"强制RTL布局方向",我的应用程序也不会显示RTL布局.系统UI被翻转,因此该选项通常可以正常工作.
为了显示RTL布局,还有什么我需要做的吗?我希望我错过了一些明显的东西.我在API 21仿真器上测试它.
我继承了一些代码.有些东西可能会覆盖设置并强制进入LTR模式.我做了一个测试应用程序来测试RTL模式,它工作正常.什么样的代码可能会导致"强制RTL布局方向"设置被忽略(或被覆盖)?
我已经检查过语言环境是否设置正确,确实如此.我还检查了配置,并ldrtl进行了设置.我在已签名的apk文件中验证android:supportsRtl了它,并且没有任何布局文件android:layoutDirection="ltr".我甚android:layoutDirection="rtl"至尝试过手动试图强制布局镜像,但这也不起作用
我在项目中添加了另一个活动,使其成为启动器活动,并确保它没有连接到任何现有代码.它是的子类Activity.这个问题仍然存在.所以从理论上讲这是一个配置问题.就像我说的那样,我检查了AndroidManifest.xml文件以及生成的所有布局文件,并且RTL支持和布局更改全部进入.配置可能出现什么问题?
Ben*_*ane 13
最晦涩的错误.正如我在问题中提到的,大部分代码都是继承的.它最终成为一个按位运算符问题,正在搞砸应用程序的标志.&=正在使用而不是&检查是否设置了标志.
正如评论中所述,该代码来自Android开发者博客文章中的一个示例,该文章解释了为什么这么多其他人遇到同样的问题.我提交了一份错误报告,此后博客文章一直在默默更新.这是我删除的原始代码&=.请勿按原样使用以下代码.您需要更改&=为&:
isDebuggable = (appContext.getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE) != 0;
Run Code Online (Sandbox Code Playgroud)