强制RTL布局方向不适用于app

Ben*_*ane 27 android arabic right-to-left

我正在尝试在我的应用程序中添加RTL语言支持(特别是现在的阿拉伯语).我也会支持英语.我做了什么:

  • 将minSdkVersion设置为17
  • 添加android:supportsRtl="true"到我的应用程序标签中AndroidManifest.xml
  • 将我的左/右属性切换为开始/结束

起初我手动进行了这些更改,然后我使用了Android Studio的"重构 - >添加RTL支持尽可能..."菜单项.

当我预览我的布局文件时,我可以看到RTL预览正确地镜像了UI; 但是,即使我使用"强制RTL布局方向",我的应用程序也不会显示RTL布局.系统UI被翻转,因此该选项通常可以正常工作.

为了显示RTL布局,还有什么我需要做的吗?我希望我错过了一些明显的东西.我在API 21仿真器上测试它.

更新

我继承了一些代码.有些东西可能会覆盖设置并强制进入LTR模式.我做了一个测试应用程序来测试RTL模式,它工作正常.什么样的代码可能会导致"强制RTL布局方向"设置被忽略(或被覆盖)?

更新2

我已经检查过语言环境是否设置正确,确实如此.我还检查了配置,并ldrtl进行了设置.我在已签名的apk文件中验证android:supportsRtl了它,并且没有任何布局文件android:layoutDirection="ltr".我甚android:layoutDirection="rtl"至尝试过手动试图强制布局镜像,但这也不起作用

更新3

我在项目中添加了另一个活动,使其成为启动器活动,并确保它没有连接到任何现有代码.它是的子类Activity.这个问题仍然存在.所以从理论上讲这是一个配置问题.就像我说的那样,我检查了AndroidManifest.xml文件以及生成的所有布局文件,并且RTL支持和布局更改全部进入.配置可能出现什么问题?

Ben*_*ane 13

最晦涩的错误.正如我在问题中提到的,大部分代码都是继承的.它最终成为一个按位运算符问题,正在搞砸应用程序的标志.&=正在使用而不是&检查是否设置了标志.

正如评论中所述,该代码来自Android开发者博客文章中的一个示例,该文章解释了为什么这么多其他人遇到同样的问题.我提交了一份错误报告,此后博客文章一直在默默更新.这是我删除的原始代码&=.请勿按原样使用以下代码.您需要更改&=&:

isDebuggable = (appContext.getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE) != 0;
Run Code Online (Sandbox Code Playgroud)

  • 哇哇 该代码最初位于此Android开发人员博客文章中:http://android-developers.blogspot.com/2010/09/securing-android-lvl-applications.html.太糟糕了:(我会看看我是否可以联系他们修理它 (3认同)