当前位置: 首页 > news >正文

Android RTL语言视图适配(保加利亚,阿拉伯语种等)

这里写自定义目录标题

  • 1. 基本属性
  • 2. TextView
  • 3. 图片
    • 3.1 静态替换

1. 基本属性

  1. 所有的paddingLeft,PaddingRight,MarginLeft,MarginRight这种全部都不要用了,一律改成Start和End。这样在镜像之后Android会自动保持原来的布局风格,将左和右倒过来。
  2. 如果是NextFocusLeft和NextFocusRight这种没有Start和End的替代的属性的话,不要再用了,在代码里面根据RTL情况实际配置。
  3. 视图代码中的setPadding改成setPaddingRelative。如果有其他关于左右的api时,也检查一下有没有对应的relative方法,改成该方法会自动适应镜像布局。(入参为x和y这种坐标概念的时候不需要检查,会自动镜像)。
  4. 视图代码中的layoutParams.leftMargin = xxx,这种改成setMarginStart()。右侧同理改成setMarginEnd()。
/*** @return true 判断布局是否是RTL*/
public static boolean isRtl() {//判断左右颠倒return TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) == View.LAYOUT_DIRECTION_RTL;
}

2. TextView

基本上所有的TextView和EditText都需要增加这些属性:

android:textDirection="locale" <!-- 文本的排放顺序跟随系统,系统是RTL该View也RTL -->
android:textAlignment="viewStart" <!-- 文本对齐方式为视图的起点,这样RTL时会自动翻转过来 -->

在RTL布局中,密码仍然遵循LTR的阅读方式,最左边的字符的下标为0

3. 图片

3.1 静态替换

大部分图片都不需要在RTL布局中也镜像,但是也有一些例外,比如说左右箭头这种,如果在RTL布局中没有镜像的话就没办法看了。

在项目的资源文件夹中,新建两个rotate.xml文件。一个在values里面,一个在values-ldrtl(没有该文件夹的话新建一个)(图片是我写错了,文件夹名为values-ldrtl)
在这里插入图片描述

文件内容如下,一一对应放进去就行:

<!--values-->
<resources><integer name="drawable_rotate">0</integer>
</resources>
<!--values-ldrtl-->
<resources><integer name="drawable_rotate">180</integer>
</resources>

接下来通过在drawable文件夹中,通过新增一个替换用的资源文件来自适应镜像布局:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"android:fromDegrees="@integer/drawable_rotate"android:toDegrees="@integer/drawable_rotate"android:pivotX="50%"android:pivotY="50%"android:drawable="@drawable/left_icon"> <!-- 需要自适应镜像的图片 -->
</rotate>

在引用的时候只需要改用新增的这个文件即可。

http://www.xdnf.cn/news/451621.html

相关文章:

  • JAVA中的文件操作
  • sqli—labs第六关——双引号报错注入
  • BitMart合约交易体验 BitMart滑点全赔的底层逻辑
  • 朱老师,3518系列,第八季
  • 使用Git+Cron实现BIND的Named域名配置自动化管理!
  • D2203使用手册—高压、小电流LDO产品4.6V~36V、150mA
  • AD 异性铺铜
  • 破解商业综合体清洁管理困局:商业空间AI智能保洁管理系统全场景解决方案
  • CodeBuddy 接入 MCP,一键生成网站!
  • 从规则驱动到深度学习:自然语言生成的进化之路
  • SpringbBoot nginx代理获取用户真实IP
  • 3337|3335. 字符串转换后的长度 I(||)
  • leetcode2934. 最大化数组末位元素的最少操作次数-medium
  • 练习小项目:倒数日小工具
  • Windows软件插件-写wav
  • 【Embedding Models】嵌入模型选择指南
  • 蓝卓入选2025宁波最具潜力新品牌TOP10
  • 数据库字段唯一性修复指南:从设计缺陷到规范实现
  • 安装windows版本的nacos
  • 总结下Jackson 中的JsonNode,ObjectNode,ArrayNode的方法
  • 时代推动建筑管理变革,楼宇自控系统成现代建筑管理必由之路
  • 数据结构·字典树
  • 每周靶点:TREM2、DLL3及文献分享
  • 代码随想录算法训练营第60期第三十六天打卡
  • W1电力线载波通信技术
  • Linux 常用命令 -hostnamectl【主机名控制】
  • Mixup
  • 【RabbitMQ】发布确认机制的具体实现
  • 3Dblox
  • 【Python3教程】Python3基础篇之输入与输出