我需要创建一个包含多种语言字符串的应用程序,包括RTL(从右到左)语言。我想知道Android上的RTL(从右到左)支持的当前状态(即使在最新的API上),例如:
是否可以动态/静态地检查设备的当前语言是否为RTL类型?我知道可以获取当前的语言环境,但我需要一种更通用的方法来检查当前语言是否为RTL。例如,对于英语和法语,它将返回false,但对于阿拉伯语和希伯来语,它将返回true。
是否可以将布局设置为自动镜像为RTL语言? 例如,如果linearLayout(具有水平方向)的子项为1> 2,则现在它将具有2< -1,并且将在左侧创建新子项。
是否有一个限定符要添加到将处理所有RTL语言的资源文件夹?例如,“res / layout”用于LTR(从左到右),“res / layout-rtl”用于RTL语言。
似乎eclipse的内容辅助建议使用linearLayout的“android:layoutDirection”和textView的“android:textDirection”,但是当我选择它们时,我得到一个它无法识别它们的编译错误。我也无法在互联网上找到有关这些属性的更多信息。他们是什么意思,为什么我不能使用它们?
答案 0 :(得分:4)
从android 4.2开始,有一些关于特殊RTL属性的信息,甚至还有一个选项可以自动为RTL语言镜像布局。
可以找到更多信息here。
希望他们能够添加更多有关如何使用它的信息,包括一些示例代码,甚至可能是关于此问题的支持库。
编辑:现在他们已经添加了一些有关如何使用新RTL支持的信息:
我想知道,如果NIKUD(希伯来语相当于元音,除了它们是可选的,它们显示为点而不是字母)现在工作正常。
编辑:现在我已经测试了它,它实际上运作得很好(这是神圣圣经的第一章):
答案 1 :(得分:0)
Android中的RTL支持在ICS上得到了一些改进。 在姜饼之前,它是特定于设备的,例如每个制造商/运营商都实施了他们自己的BiDi解决方案,这导致了应用程序中的一些不一致
不需要它。好的BiDi知道镜像文本视图和canvas.draw文本的首字母utf8代码..这让你更少关于BiDi和更多关于你的应用程序。只是不要强制重力并在文本视图上填充父级
不,有阿拉伯语/希伯来语的限定符等。你几乎可以改变一切。但是好的设备实现除了翻译之外不需要任何东西。
。因此它无法在Android范围内工作并导致编译错误。 但它有更多的理由发生......
通常我建议你忽略BiDi问题有两个原因:
来自使用rtl的国家/地区的人通常会使用可以处理相当好的设备,如果不是那么就是他们的问题。
为一台设备修复BiDi会导致其他设备无法使用。这一切都是在一年前完成的......幸运的是开发人员终于停止了这个错误