Android 应用支持RTL 阿语反转的UI适配处理看这一篇就够了
注意:应用程序支持RTL的布局需要在AndroidManifest.xml的<application>
中,添加android:supportsRtl=true。
该声明代表您的应用程序是否支持从右到左(RTL)布局。targetSdkVersion设置为17或更高,则系统将激活并使用各种RTL API,以便您的应用程序可以显示RTL布局。如果设置为false或者targetSdkVersion设置为16或更低,则RTL API将被忽略或无效。
首先先从控件讲起,Android官方控件大多支持RTL,需要注意的控件如下:
1、TextView 一般情况下用wrap_content,这会使你在阿语下,做机型适配方面变得很容易,因为她是自适应的,你不用担心文本的对齐方式,如果必须要用match_parent的话,则需要加上 android:textAlignment="viewStart" 这个属性,否则阿语下文本对齐方式不对,另外 android:textDirection 属性来设置文本方向,根据需要进行设置。
另外针对华为,小米等国产手机,阿语下 ,TextView的单行显示省略号在左边的问题,只需要加上 gravity = “start” 属性即可把 省略号显示在右侧 ,PS一句大三星就不会有这个显示问题。。。
还有针对UI是720标准的设计,导致在2K屏部分界面 TextView 显示拥挤字换行的情况,处理方式很简单就是字号用sp,然后加上 android:autoSizeMaxTextSize、 android:autoSizeMinTextSize、 android:autoSizeTextType="uniform"、android:autoSizeStepGranularity="2sp",即可解决问题。
2、EditText 如果系统语言是非RTL布局的,如:中文系统,英文系统,而APP语言是阿语的情况下,输入数字会文本对齐是在最右边并且出现首尾都有光标,输入纯英文文本对齐又跑到了最左边并且光标只在尾部的情况,这时需要在布局文件内加上如下两个属性即可解决问题:
android:textDirection="anyRtl" android:textAlignment="viewStart"
3、ViewPager 不支持RTL,不支持RTL,不支持RTL重要的事说三遍,不过这里给一个第三方的比较好用的替代控件RTLViewPager,它的Git地址:"com.booking:rtlviewpager:1.0.1",当然也可以自己手动实现,但你得足够强大哈!
其次说下图片,动画等反转:
1、有些图标(比如箭头)本身是有方向的,在RTL下也需要进行翻转,可以使用 android:autoMirrored 特性, 设置图片是否需要镜像反转,API Level 19(Android 4.4)才添加的属性。当然也可以让UI给出反转图片放到 drawable-ldrtl-xhdpi 目录下,不同分辨率放在不同目录下如:drawable-ldrtl-xxhdpi 。方便兼容低版本的API。
另外有语言文字的图片需要放到对应的语言资源文件夹下如:drawable-ar-xhdpi
2、动画的话,新建anim-ldrtl文件夹,将对应的动画进行反向处理。
最后说下RTL下常用的一些属性:
1、AS支持一键适配RTL,主要是针对Layout中XML文件里的
paddingLeft
,paddingRight
,layout_marginLeft
,layout_marginRight
,layout_alignParentLeft
,layout_alignParentRight
等属性使用paddingStart
,paddingEnd
,layout_marginStart
,layout_marginEnd
,layout_alignParentStart
,layout_alignParentEnd
替换。Start属性在LTR中对应Left,在RTL中对应Right,Edn则相反。在API 17开始支持,为了兼容低版本,可以同时有Left和Start。
2、android:layoutDirection 属性是改变布局方向的 ,RTL布局里,某些情况下可能个别页面需要从左到右显示,这时候可以添加该属性 android:layoutDirection = "ltr"。
注意:Android SDK在大于等于26时,即Android系统版本是8.0及8.0以上时,设置完 阿语 语区,通过 recreate() 的方式实现资源更新时,发现文字、图片等资源更新了但是布局没有反转。解决方法是进行 SDK 版本判断,然后进行代码设置布局方向,代码如下:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){Resources res = getResources();Configuration conf = res.getConfiguration();getWindow().getDecorView().setLayoutDirection(conf.getLayoutDirection());
}
PS:后续有遇到新东西会在补上,也欢迎各位拍砖修正哈!
Android 应用支持RTL 阿语反转的UI适配处理看这一篇就够了相关推荐
- Android 必须最近流行的框架库及开发语言,看这一篇就够了!
本文更新时间:2018年07月12日15:50:40 目录 导语 图片加载库 异步分发通信库 新技术语言 注入注解框架 设计模式 UI框架 网络请求库 日志打印库 logger,简单,漂亮的andro ...
- Android悬浮窗适配全机型,包含8.0,小米魅族华为悬浮窗权限适配demo看这一篇就够了
机型多杂,适配无法完全兼容,不如换种实现方式,性能比悬浮窗好,不需要权限,效果更好:https://blog.csdn.net/m0_38058826/article/details/10399339 ...
- android适配华为m5,2019-05-29 Android悬浮窗适配全机型,包含8.0,小米魅族华为悬浮窗权限适配demo看这一篇就够了...
兼容8.0,小米,魅族,华为等难适配机型都可完美适配. 悬浮窗插入接口 在实现悬浮窗之前,我们需要知道通过什么接口,能够将一个控件放入到屏幕中去. Android的界面绘制,都是通过WindowMan ...
- android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧
转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...
- 2021届毕业生还没找到Android开发工作,看这一篇就够了!
前言 选了开发这一行,就意味着想混得好就要持续学习,你的技术和薪资.位置直接挂钩,进步对于程序员的重要性就不赘述了,接下来作为过来人,为广大同行分享一些学习干货,希望可以帮到大家 应届坎坷求职路 一个 ...
- 嵌入式产品如何支持阿拉伯文显示---看这一篇就够了
在国际化大潮流之下,很多嵌入式系统产品,需要支持阿拉伯语言,可很多人却为之烦恼,我遇到了同样的烦恼,因此在网上搜索了很多关于阿拉伯字库及阿拉伯语言显示的资料,经过实战,整理了这篇文章.资料. 阿拉伯语 ...
- Android指纹识别,看这一篇就够了
在Android6.0(Api23)的时候,Android系统加入了指纹识别的api接口,即FingerprintManager,定义了最基础的指纹识别接口.不过,在AndroidP(Api28)的时 ...
- Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!
导语 2017 已经悄悄的走了,2018 也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来,来规划一下今年要学哪些新技术.这几年优秀Android的开源库不断推出,新技术层出不穷,需要我们不断 ...
- Android多种方式实现相机圆形预览 看这一篇就够了,Android开发面试书籍
} public void turnRound() { invalidateOutline(); } 即可根据设置的圆角值更新控件显示的圆角大小.当控件为正方形,且圆角值为边长的一半,显示的就是圆形. ...
最新文章
- matlab的pid控制系统设计,PID控制系统设计以及MATLAB仿真.doc
- windows平台下vlc编译之六:vlc-0.9.8a的编译
- java安全编码指南之:拒绝Denial of Service
- python字符串切割:str.split()和re.split()对比
- 苹果公司透露Siri新发音引擎的内部原理
- 浅析 NodeJs 的几种文件路径
- LeetCode 1614. 括号的最大嵌套深度
- IIS和Asp.Net页面运行机制
- 7-5 服务器统一出错处理2
- 【面经】数据开发一面-美团暑期实习
- Server 2008系统安装驱动提示“无法验驱动程序数字签名”怎么办?
- 【无标题】通信系统的有效性和可靠性
- 元宇宙:人类叙事的下一个100年
- 数字滤波器的MATLAB与FPGA实现--Altera/Verilog版的pdf版,杜勇等编著的书。
- 6轮面试辛苦拿到阿里Android开发offer,却从22k降到15k,在逗我
- 安卓8.X解包打包工具和教程,windows平台一键打包解包工具
- 关于3Dmax出现错误奔溃和中毒解决问题方法
- 绿幕抠图SDK技术对比
- 简单抽奖软件java程序设计
- android 高版本(设备11的)wifi扫描,获取wifi列表
热门文章
- 如何使用 Django 进行测试驱动开发,我来告诉你
- 信息安全 数据赛 铁人三项_信息安全铁人三项赛线上资格赛完美收官
- Vue组件中name的三大作用
- 跟随高博学RGBDSLAM
- Java核心技术:日期和时间新旧API对比
- RabbitMQ 3.9( 续 )
- 【题解】CH#46A 磁力块 分块+排序+队列
- Gson解析:declares multiple JSON fields named XXX
- Social Recommendation with Missing Not at Random Data (ICDM 2018)中文翻译(一)
- Resnet-18的搭建