我正在开发一款支持 En/Ar 的 Android 应用。但我遇到了一个问题,如果用户从 En 更改为 Ar,则用户界面的对齐方式必须从“左到右”变为“从右到左”。
示例:(TextView)(EditText)这是英文
但在 Ar 中它应该是:(EditText)(TextView)。
有没有办法做到这一点无需创建两个不同的布局或两个不同的版本?
最佳答案
为什么这不能用两种布局来完成(你从来没有说过为什么这是不可取的)?如 Android 开发者文档所述
A large part of localizing an application is providing alternative text for different languages. In some cases you will also provide alternative graphics, sounds, layouts, and other locale-specific resources.
An application can specify many res// directories, each with different qualifiers. To create an alternative resource for a different locale, you use a qualifier that specifies a language or a language-region combination.
引用:http://developer.android.com/guide/topics/resources/localization.html
因此,在您的情况下,创建 res/layout-ar
然后将您现有的布局复制到此文件夹中,然后简单地交换它们。简单,遵循最佳实践并且很容易做到。这也使得任何进一步的本地化更改更容易进行,而无需编写更多代码。
如果您要编写代码,您将需要找到设备的默认语言,然后根据此交换 View 。您可以通过以下方式获取语言:
Locale.getDefault().getDisplayLanguage();
有关更多详细信息,请参阅此问题:Get the current language in device
关于最后的个人说明:我认为前者是更好的关注点分离,因为代码提供了逻辑,而 XML 布局实际上控制了布局(Android 会自动为您选择正确的资源,而无需再编写任何内容代码)。
关于android - 开发支持英语和阿拉伯语的 Android 应用程序 "layout alignment",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9691500/