开发Android应用程序以支持英语和阿拉伯语"布局对齐"

Nou*_*ouf 13 layout android right-to-left

我正在开发一个支持En/Ar的Android应用程序.但我遇到的问题是,如果用户从En更改为Ar,则用户界面的对齐必须从"从左到右"变为"从右到左".

示例:(TextView)(EditText) 这是在En中

但在Ar中它应该是:(EditText)(TextView).

有没有办法在不创建两个不同的布局或两个不同的版本的情况下执行此操作?

Gra*_*ith 12

为什么不能用两种布局来完成(你从来没有说过为什么这是不可取的)?如Android开发人员文档所述

本地化应用程序的很大一部分是为不同语言提供替代文本.在某些情况下,您还将提供替代图形,声音,布局和其他特定于语言环境的资源.

应用程序可以指定许多res //目录,每个目录都有不同的限定符.要为其他语言环境创建备用资源,请使用指定语言或语言区域组合的限定符.

参考:http://developer.android.com/guide/topics/resources/localization.html

因此,在您的情况下,创建res/layout-ar然后将现有布局复制到此文件夹中,然后简单地将它们交换.简单,遵循最佳实践并且易于操作.这也使得任何进一步的本地化更改变得更容易,而无需编写更多代码.

如果您要编写代码,则需要找到设备的默认语言,然后根据此交换视图.你可以通过以下方式获得语言:

Locale.getDefault().getDisplayLanguage();
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此问题:获取设备中的当前语言

最后一点是:我认为前者是一个更好的关注点分离,因为代码提供了逻辑,XML布局实际上控制了布局(Android为您自动选择正确的资源而无需编写任何更多的代码).