gpt4 book ai didi

android - 强制 RTL 布局方向不适用于应用程序

转载 作者:IT老高 更新时间:2023-10-28 22:10:09 31 4
gpt4 key购买 nike

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

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

起初我手动进行了这些更改,然后我使用了 Android Studio 的“Refactor -> Add RTL Support Where Possible...”菜单项。

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

我还需要做些什么来显示 RTL 布局吗?我希望我错过了一些明显的东西。我正在 API 21 模拟器上对此进行测试。

更新

我继承了其中的一些代码。某些东西可能会覆盖设置并强制其进入 LTR 模式。我制作了一个测试应用程序来测试 RTL 模式,它运行良好。什么样的代码会导致“强制 RTL 布局方向”设置被忽略(或被覆盖)?

更新 2

我检查了区域设置是否正确,确实如此。我还检查了配置,并设置了 ldrtl。我在签名的 apk 文件中验证了 android:supportsRtl 是否包含在其中,并且所有布局文件都没有 android:layoutDirection="ltr"。我什至尝试手动放置 android:layoutDirection="rtl" 以尝试强制布局镜像,但这也不起作用。`

更新 3

我向项目添加了另一个 Activity ,将其设为启动器 Activity ,并确保它未连接到任何现有代码。它是 Activity 的子类。问题依然存在。所以理论上这是一个配置问题。就像我说的,我检查了 AndroidManifest.xml 文件和所有生成的布局文件,以及 RTL 支持和布局更改都完成了。配置可能出了什么问题?

最佳答案

有史以来最不起眼的错误。正如我在问题中提到的,大部分代码都是继承的。它最终成为一个按位运算符的问题,它搞砸了应用程序的标志。 &= 被用来代替 & 来检查是否设置了标志。

如评论中所述,代码取自 Android Developers blog post 中的示例,这就解释了为什么这么多人遇到同样的问题。我提交了一个错误报告,并且该博客文章已被悄悄更新。这是原始代码,我从中删除了 &=不要按原样使用以下代码。您需要将 &= 更改为 &:

isDebuggable = (appContext.getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE) != 0;

关于android - 强制 RTL 布局方向不适用于应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356178/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com