Android阿拉伯语UI适配问题汇总
Android阿拉伯语UI适配问题汇总
Sensi Sun
- RTL和LTR
LTR 是 Left-to-right(从左向右) 的缩写。(常用)
RTL 是 Right-to-left(从右向左) 的缩写。其意为人们书写阅读习惯是从右向左,朝左继续的。常见的RTL语言有阿拉伯语,希伯来语等。
从 Android 4.2 即 SDK 17 开始,提供了全面的本地布局支持,允许镜像布局,可以同时支持 RTL 和 LTR。
- 阿拉伯语适配方法
- AndroidManifest.xml文件配置
在 AndroidManifest.xml 文件中 application 节点添加支持从右到左布局方式代码。
<application
...
android:supportsRtl="true" >
...
<licatio
- 切换语言
- 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 插件的比较:
- 性能更好。在处理大批量文件修改时,用AS工具会出现卡顿;
- 支持padding标签的补齐。
- 风险:可能会出现部分布局文件未添加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.使用全局样式
- EditText
EditText 控件基本都需要设置下面两个属性:
android:textAlignment="viewStart"
android:gravity="start"
可以在 style.xml 样式中全部 EditText 都设置:
- TextView
全局给所有 TextView 添加一个 RTL 属性
【判断是否是 RTL 布局】
TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == LayoutDirection.RTL
- 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
文档还在完善中,欢迎大家提出问题,交流分享!
Android阿拉伯语UI适配问题汇总相关推荐
- Android 系统(226)---Android 阿拉伯语适配
Android 阿拉伯语适配 RTL 语言由来 RTL 是 Right-to-left(从右向左) 的缩写.其意为人们书写阅读习惯是从右向左,朝左继续的,常见的 RTL 语言有阿拉伯语,希伯来语等. ...
- Unity阿拉伯语的适配(终极版)
最近在做阿语的适配,发现网上并没有一套完整的方案,这次给大家带来一套完整的解决方案,并配上一套可扩展的代码,希望我们每个人以后再遇到阿拉伯语的适配的时候,可以使用这套终极解决方案来搞定.同时随着uni ...
- Android阿拉伯语混排
文章目录 1.Android阿拉伯语混排显示关键类 BidiFormatter 1.示例一 测试一 测试二 测试三 测试三 测试四 测试五 2. 示例二 3. 示例三 4. 示例四 2.关于实现上面功 ...
- Android 阿拉伯语适配
首先推荐一个链接:https://www.jianshu.com/p/d8cd294a5c31 开始进入正题 1.sdk要求: Android 4.2 即 SDK 17 2.四个重要属性: andro ...
- iOS 阿拉伯语 RTL适配
阿拉伯语: 背景:阿拉伯语使用者占世界人口的6%,使用阿拉伯字母,为从右至左书写的文字,主要通行于18个阿拉伯国家及4个国际组织的官方语言.以阿拉伯语作为母语的人数超过2.6亿人.阿拉伯语在全球范围使 ...
- android 今日头条布局,Android今日头条UI适配完善版
前言 众所周知 android的碎片化一直困扰着开发者,我们要花很多的时间去做UI适配的工作.主流的适配方案有两种 1.今日头条适配 2.smallestWidth适配.具体的实现点击上述连接查看. ...
- android 阿拉伯语下的光标,android – 在EditText中的游标提示不是从右边开始的阿拉伯语...
我正在尝试使用提示文本制作EditText: 用英文"password"..光标正确设置在左侧. 但对于提示为"كلمهالمرور"的阿拉伯语,光标始终设置为 ...
- android 阿拉伯语下的光标,android – EditText中的双光标,用于输入类型编号/电话(RTL阿拉伯语)...
我有一个EditText设置为重力右,所以如果语言是阿拉伯语,文本从右边开始. 注意:我的应用程序支持RTL,我没有为EditText设置TextDirection,因为它会遇到同样的问题.设置为Ri ...
- android 阿拉伯语符号,阿拉伯文符号
阿拉伯语(العَرَبِيَّة al-ʻarabīyah [alʕaraˈbijja] 或者 عربي/عربى ʻarabī [ˈʕarabiː])是除了英语和法语之外最多国家使用的官方语言 ...
最新文章
- system函数阻塞_CompletableFuture:让你的代码免受阻塞之苦
- wsus问题之无法访问 WSUS 控制台
- 关于showmodaldialog的问题处理
- Haar、pico、npd、dlib等多种人脸检测特征及算法结果比较
- vue项目打包之后放在服务器上测试的时候访问不到本地json数据的解决方法
- android listview 开发,android开发之ListView实现
- redis源码剖析(十三)—— dump.rdb文件分析
- 网易《社会心理学》笔记(不定时更新)
- Linux安装caffe问题汇总
- could not find Fragment constructor
- LTP(Linux Test Project)学习(五)——LTP代码学习
- 《愤怒的小鸟》全系列游戏——这些都玩过,你就碉堡了~(版本一)
- iOS解决“The ‘Pods-XXX‘ target has transitive dependencies that include statically linked binaries”报错
- RISC-V要上天!NASA选它做下一代航天计算芯片
- t3怎么设置远程服务器,T1怎么配置才能让客户端远程登录上服务器呢?不借助任何第三方工具。...
- English Learning - L1-11 时态 + 情态动词 2023.1.9 周一
- 易创索讯-dede模板建站页面模板seo优化设置
- 最新!教育部发布2019全国高校名单(2956所)
- 会声会影X5/6/7无法注册解决(点击已经购买跳到购买网站)
- CentOS安装mysql 5.7.28
热门文章
- java下载微信支付账单_java微信支付,对账单下载
- mysql操作窗口如何设置粘贴_现在我在学习MySQL,问问怎么复制粘贴数据库
- excel 置信区间 计算_如何用excel计算95%的置信区间 | 在excle中如何进行区间估计...
- 你知道如何用 Git 来统计代码吗?
- vue rsa加密 php解密,【今日学习】VUE使用RSA加密技术
- 如何使用CSS和JavaScript构建简单的甘特图
- Qt处理传输协议数据时QByteArray添加多字节的使用案例
- WIN10环境下MAVEN的安装与配置
- P2V vCenter Converter Standalone迁移(问题记录)
- 有意义的人生与学习——跟随大师感悟人生