android的RTL支持

最近在做阿拉伯语下RTL支持,在网上收集到一些资料,跟大家分享下。

第一步:首先要在AndroidManifest中的Application中添加属性android:supportsRtl=true”

第二步:

第三步:切换到阿拉伯语,查看显示不正确的布局,按照下面的方法具体调整了

(英文)Android 4.2 支持原生RTL(由右到左显示)

http://blog.csdn.net/ultrapro/article/details/8690145

android 开发者网站

http://developer.android.com/about/versions/android-4.2.html

RTL布局支持

Android现在提供了一些API,使您可以构建更优雅的变换布局方向的用户界面。这些界面将支持由右到左(RTL)的语言和阅读方向。比如阿拉伯语和希伯来语。

为了使您的应用支持RTL布局,需要在manifest文件中设置元素的android:supportsRtl属性为“true”。一旦启用,该系统将启用各种RTL API来用RTL布局显示您的应用。举例来说,在操作栏中将操作按钮显示在左侧,而把图标和标题显示在右侧。所有您用框架提供的View类所构建的布局也会以相反的方向显示。

如果您需要在显示RTL布局时进一步优化您应用的外观,有两个基本层面的优化:

  1. 将左——右方向的布局属性转变为开始——结束方向的布局属性。 
    例如,用android:layout_marginStart替换android:layout_marginLeft,用android:layout_marginEnd替换android:layout_marginRight。 
    RelativeLayout类也提供了相应的布局属性,来替换左/右位置,如:android:layout_alignParentStart替换android:layout_alignParentLeft,用android:layout_toStartOf替换android:layout_toLeftOf。

  2. 或者,使用ldrtl资源限定词(ldrtl意味着布局方向由右至左)资源提供完整的针对RTL布局优化过的布局文件。例如,您可以在res/layout/目录保存您默认的配置文件,而在res/layout-ldrtl/目录下保存您针对RTL优化过的布局。 
    ldrtl限定词对drawable资源也很适用,这样您就可以提供与阅读方向相同的图片了。

框架中还有各种其它的支持RTL布局的API,比如,在View类中,您可以在定制的view中实现适当的行为;在Configuration类中,可以查询当前的布局方向。

注意:如果您用SQLite而表名或列名使用了“仅允许数字”特性。请小心:当您的设备设置为阿拉伯地区,使用String.format(String, Object...) 方法时会因为数字转换成对应的阿拉伯文而导致错误。您必须使用String.format(Locale,String,Object...),以确保数字以ASCII的编码保存。还可以使用String.format("%d", int)来取代String.valueOf(int)以格式化数字。

最近遇到个问题,阿拉伯语下全英文会靠左显示,在对应TextView 中加android:textDirection="rtl"这个属性就会跟阿拉伯文一样都显示在右边,并且不会影响阿拉伯文的显示。跟大家分享下,攒人品,哈哈 :)

如果想要调整文字

转自:http://article.yeeyan.org/view/37503/335086


你可能感兴趣的:(Android)