当前位置: 移动技术网 > 移动技术>移动开发>Android > Android阿拉伯语UI适配问题汇总

Android阿拉伯语UI适配问题汇总

2020年08月10日  | 移动技术网移动技术  | 我要评论
Android阿拉伯语UI适配问题汇总Sensi SunRTL和LTRLTR是 Left-to-right(从左向右) 的缩写。(常用)RTL 是 Right-to-left(从右向左) 的缩写。其意为人们书写阅读习惯是从右向左,朝左继续的。常见的RTL语言有阿拉伯语,希伯来语等。对比如下:LTRRTL...

Android阿拉伯语UI适配问题汇总

Sensi Sun

  • RTL和LTR

LTR 是 Left-to-right(从左向右) 的缩写。(常用)

RTL 是 Right-to-left(从右向左) 的缩写。其意为人们书写阅读习惯是从右向左,朝左继续的。常见的RTL语言有阿拉伯语,希伯来语等。

从 Android 4.2 即 SDK 17 开始,提供了全面的本地布局支持,允许镜像布局,可以同时支持 RTL 和 LTR。

  • 阿拉伯语适配方法
  1. AndroidManifest.xml文件配置

在 AndroidManifest.xml 文件中 application 节点添加支持从右到左布局方式代码。

 <application

        ...

        android:supportsRtl="true" >

        ...

<licatio

  1. 切换语言
  2. AS一键适配

AS 支持一键适配 RTL,主要是在原来 Layout 中设置 Left 和 Right 属性的补充添加 Start 和 End 属性。Start 属性在 LTR 中对应 Left,在 RTL 中对应 Right,在API 17开始支持,为了兼容低版本,需要同时有 Left 和 Start。

Refactor > Add RTL Support Where Possible...

 

添加Start 和 End 属性有两种方法:

方法一:手动在原来 Layout 中设置 Left 和 Right 属性的补充添加 Start 和 End 属性。

风险分析:暂无。

方法二:导入第三方插件。

名称

描述

gradle-android-rtl

自动修复布局文件中未添加RTL支持的标签

与 AS 插件的比较:

  1. 性能更好。在处理大批量文件修改时,用AS工具会出现卡顿;
  2. 支持padding标签的补齐。
  3. 风险:可能会出现部分布局文件未添加RTL支持的标签。

【配置】

buildscript {

    repositories {

        // ...

        maven { url "https://jitpack.io" }

    }

    dependencies {

        classpath 'com.github.znyang:gradle-android-rtl:0.0.4'

    }

}

 

apply plugin: 'com.zen.plugin.rtl'

rtl {

    from = fileTree("${project.projectDir}/src/main/res/layout/")

    // into = "${project.buildDir}/outputs/rtl/res/layout"

}

【输出】

gradle androidRtl

需要修复的layout文件会生成在rtl.into的目录下,可以在确认后覆盖到你的layout目录下,再进行一遍检查!

注:未定义rtl.into的情况下,修复的文件会直接覆盖原文件!

支持的标签如下:

{

    "layout_toLeftOf", "layout_toStartOf",

    "layout_toRightOf", "layout_toEndOf",

 

    "layout_marginLeft", "layout_marginStart",

    "layout_marginRight", "layout_marginEnd",

 

    "layout_alignLeft", "layout_alignStart",

    "layout_alignRight", "layout_alignEnd",

 

    "layout_alignParentLeft", "layout_alignParentStart",

    "layout_alignParentRight", "layout_alignParentEnd",

 

    "drawableLeft", "drawableStart",

    "drawableRight", "drawableEnd",

}

// padding只要存在left/right,就会补充四个标签

{

    "paddingLeft", "paddingStart",

    "paddingRight", "paddingEnd"

}

// 支持对以下标签的value替换(left->start, right->end)

{

    "layout_gravity",

    "gravity"

}

如何验证修复完善?

Android>Lint>Internationalization>Bidirectional Text

4.使用全局样式

  1. EditText

EditText 控件基本都需要设置下面两个属性:

android:textAlignment="viewStart"

android:gravity="start"

可以在 style.xml 样式中全部 EditText 都设置:

 

  1. TextView

全局给所有 TextView 添加一个 RTL 属性

 

【判断是否是 RTL 布局】

TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == LayoutDirection.RTL

  1. ViewPager

Android 官方控件大多支持 RTL,ViewPager 除外。

ViewPager的rtl适配方法链接:https://github.com/diego-gomez-olvera/RtlViewPager

  • 菜单栏的图标处理

图标处理:

方法一:图标做两套,放在不同的文件夹里,切换语言和阿拉伯语适配的时候,进行图标的变更;

方法二:图标保持不变,切换的时候,直接将图标右移,图标位置保持不变。

附:

插件:AndroidLocalizationer(实现语言国际化,支持30多种语言,可以实现词条strings.XML文件的转换。)

相关链接:https://blog.csdn.net/u012437660/article/details/79495537

 

文档还在完善中,欢迎大家提出问题,交流分享!

 

 

本文地址:https://blog.csdn.net/renus_sun/article/details/86639208

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网