我的应用程序将来必须支持RTL和LTR语言,但现在只支持RTL.当我在每个布局中使用android:supportsRTL =“true”和android:layoutDirection =“end”时,NavigationView和Toolbar以及其他一切都很好.
但唯一的问题是,当用户将系统语言更改为LTR语言时,由于布局方向的改变,一切都会出错.
我需要什么:我必须设置supportsRTL:“true”.当用户在启动时选择“应用程序”语言而不是根据操作系统语言时,我需要以编程方式更改布局方向.
问题:有没有办法通过更改操作系统语言来防止自动更改布局方向(不是通过设置supportsRTL false)?
如果我设置android:supportRTL =“false”并只为RTL设计布局,工具栏和导航的菜单方向将是我的新烦恼.
解决方法:
解决了.这只是一个小小的可怕错误.
但是对于那些有类似问题的人来说,我在Android 17或更高版本上工作得非常好,对于17之前,我认为唯一的方法是为RTL和LTR使用单独的布局.
如果你必须在清单中使用android:supportsRTL =“true”,那么:
1.如果您只想支持RTL语言,请防止根据OS语言更改方向:
只需将android:layoutDirection =“rtl”添加到所有布局的父级(也可以在styles.xml like this中使用主题).
或者创建一个子活动并从中扩展所有活动,然后将此代码放在onCreate中:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Configuration configuration = getResources().getConfiguration();
configuration.setLayoutDirection(new Locale("fa"));
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
但在我看来,最好在每个布局中将方向设置为rtl,因为如果没有运行应用程序,您可以看到它的外观.
2.如果你想同时支持RTL和LTR语言,当然不要在你的布局中使用android:layoutDirection =“rtl / ltr”因为它的方向即使是代码也不会改变.因为它会在rtl或ltr方向上修复它.所以你应该使用第二个.制作一个子活动,并从中扩展您的所有活动,然后将此代码放入其中(仅作为示例):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Configuration configuration = getResources().getConfiguration();
if (isSlectedLanguageRTL) {
configuration.setLayoutDirection(new Locale("fa"));
} else {
configuration.setLayoutDirection(Locale.ENGLISH);
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
最后,抱歉我的英语:)
标签:android-layout,multiple-languages,android,rtl-language
来源: https://codeday.me/bug/20190722/1501440.html
Android
布局
之 RTL中东国家地区须要适配 RTL的
布局
,顾名思义支持从右至左
布局
android
前提:在
Android
Manifest.xml文件中
android
:
support
sRtl
=
true
,表示应用支持RTL
布局
此外TargetSdkVersion>=17,若不设置中东语言可开启开发者选项中强制
使用
从右至左
布局
布局
支持RTL
布局
时
,
布局
参数要尽可能避免
使用
left 或ri...
在
Android
manifest.xml文件中的 application 标签内加上
android
:
support
sRtl
="
true
"属性,在设置为强制
使用
从右到左的
布局
文件
时
,才会有效果。
设置
android
:
support
sRtl
="
true
"无效
今天解bug
时
,遇到这样一个问题:
问题描述:切换系统语言为阿拉伯文
时
,actionbar
布局
没有变为从右向左排列
声明您的应用是否愿意支持从右到左 (RTL)
布局
。 如果设为
true
并且 targetSdkVersion 设为 17
或更高版本,则系统会激活和
使用
各种 RTL API,以便您的应用可以显示 RTL
布局
。如果设为 false 或者如果
targetSdkVersion 设为 16 或更低版本,则 RTL API
将被忽略或不起
作用
,无论与用户所选语言区域关联的
布局
方向
为何(
布局
始终是从左到右),应用的行为都相同。
此属性的默认值为 false。
此属性是在
今天,简单讲讲
android
里如何
使用
Android
Manifest文件里的
android
:
support
sRtl
属性。之前,在app上发现一个问题,就是app设置为阿拉伯语
时
,手机默认德我
布局
方向
变成了从右往左,导致界面出现了很大的问题。后来通过修改
布局
,解决了部分界面的问题,但是界面在从右往左
时
还是显示的不很好看。于是我打开应用宝,发现应用宝的界面是正常的从左往右
布局
。所以在网上查找资料,...
Android
Studio新建工程的
Android
Manifest文件里会有一个
support
sRtl
属性,并且默认是
true
,那这个属性到底有什么用呢,顾名思义就是“支持RTL”官方文档:
android
:
support
sRtl
Declares whether your application is willing to
support
right-to-left (RTL) layouts.If...
Android
Studio新建工程的
Android
Manifest文件里会有一个
support
sRtl
属性,并且默认是
true
,去看了看官网对
android
:
support
sRtl
的解释
官网原文链接:https://developer.
android
.g...
这个是为了做地区适配的,RTL即从右向左
布局
,
Android
4.2支持原生RTL,有些语言,例如阿拉伯语,它的阅读习惯是从左向右的,为了优雅的
更改
布局
方向
,直接在application中设置
android
:
support
sRtl
="
true
"即可。一旦启用,该系统将启用各种RTL
API来用RTL
布局
显示您的应用。举例来说,在操作栏中将操作按钮显示在左侧,而把图标和标题显示在右侧。所有您用框架
平
时
开发中经常遇到的很小的问题,这里记录一下。
一般在
Android
Manifest.xml中添加了
android
:windowSoftInputMode=adjustResize或者adjustPan的话,页面中包含EditText控件进入
时
会
自动
弹出软件盘。
1.在包含EditText的父
布局
中添加
android
:focusable=
true
和
android
:focusableInTouchMode=
true
<?xml version=1.0 encoding=utf-8?>
<LinearLayout xmlns:
android
=http://schemas.a
http://
android
ren.com/index.php?qa=334&qa_1=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8
android
-
support
srtl
android
4.2(SDK版本为17)有一个新特性 layoutRtl,当然是对于开发者而言的,主要是方便开发者去支持阿拉伯语/波斯语等阅读习惯是从右往左的。 可以在manifest的ap
在做一个外单的
时
候,需要让手机
使用
乌尔都语(巴基斯坦),当我设置之后,发现设置的
布局
反了,变成左右颠倒了。后来才知道是
support
sRtl
这个属性搞的鬼google为了照顾到一些国家的阅读习惯,搞出这样一个属性,具体情况是:在应用清单文件里的Application里设置这个属性为
true
的话,变换为某些语言后,
布局
会变成从右到左排序,如果不希望这样的话,可以设置成false,默认是false。 <