添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

我的应用程序将来必须支持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。 <