android - 开发支持英语和阿拉伯语的 Android 应用程序 "layout alignment"

标签 android layout right-to-left

我正在开发一款支持 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/

相关文章:

android - 矢量图像的颜色选择器不起作用

java - Android下载Zip(可以在服务器上更改名称)

html - 如何使父容器应该并排包含所有子容器

reporting-services - Reporting Services - 从右到左对齐矩阵

objective-c - iPhone如何忽略尊重语言方向

android - React-native google auth android DEVELOPER_ERROR 代码 10

android - 什么会导致 getSkuDetails() 返回 null?

CSS 布局将文本放在它旁边而不是下面

android - 如何获取部分布局在另一个布局下

python - 无法设置字体大小和 rtl