我正在开发一个 Android 应用程序来支持 En/Ar。但我面临一个问题,如果用户从 En 更改为 Ar,用户界面的对齐方式必须从“从左到右”变为“从右到左”。
例子:(文本视图)(编辑文本)这是在恩
但在 Ar 中应该是:(编辑文本)(文本视图).
有没有办法做到这一点无需创建两个不同的布局或者两个不同的版本?
为什么不能用两种布局来完成(你从来没有说过为什么这是不可取的)?正如 Android 开发者文档中所述
本地化应用程序的很大一部分是提供替代方案
不同语言的文本。在某些情况下,您还将提供
替代图形、声音、布局和其他特定于语言环境的内容
资源。
一个应用程序可以指定许多 res// 目录,每个目录
具有不同的限定符。为某个项目创建替代资源
不同的语言环境,您可以使用指定语言或语言的限定符
语言-区域组合。
Ref: http://developer.android.com/guide/topics/resources/localization.html http://developer.android.com/guide/topics/resources/localization.html
所以在你的情况下创建res/layout-ar
然后将现有布局复制到此文件夹中,然后简单地交换它们。简单,遵循最佳实践并且很容易做到。这也使得任何进一步的本地化更改都更容易进行,而无需编写更多代码。
如果您要编写代码,您将需要找到设备的默认语言,然后基于此交换视图。您可以通过以下方式获取语言:
Locale.getDefault().getDisplayLanguage();
有关更多详细信息,请参阅此问题:获取设备当前语言 https://stackoverflow.com/questions/4212320/get-the-current-language-in-device
最后的个人说明:我认为前者是更好的关注点分离,因为代码提供了逻辑,而 XML 布局实际上控制了布局(Android 会自动为您选择正确的资源,而无需编写更多代码)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)