禁用动作条RTL方向(Disable ActionBar RTL Direction)

2019-08-07 08:32发布

Android 4.2版本引入了RTL(比迪)的支持,开始使用它,我只是按照指示(Android版:在您的清单文件supportsRtl属性的元素,并将其“真“)

但后来我动作条标识也改变方向向右(标志显示在右侧),我不想。 我想使用RTL功能,但保持朝向左侧的动作条...

换句话说,我该如何使用android:supportsRtl属性没有它在Android 4.2改变动作条的方向时,语言方向为RTL

有什么建议 ?

Answer 1:

首先,没有遗憾,在ActionBar应该当你在RTL模式的反射镜。 这一点已被检查和比迪/ RTL专家验证。 设置机器人:supportsRtl = true意味着你的应用程序是愿意支持RTL布局镜像。 如果这样做,则动作条(因为每个Android框架部件)将被镜像,因为它没有任何意义,以显示它在LTR方向。

其次,你对屏幕尺寸和人体工程学的问题争论了访问左上方或右上方的菜单是不相关的RTL支持。 如果在LTR模式等问题,那么你将不得不在RTL模式完全相同的问题。 这不仅关系到屏幕大小。

第三,所有的Android UI框架部件都是本机支持RTL镜像。 如果发现问题,请提交公共bug跟踪系统上的错误。

四,谷歌企业应用套件将支持RTL布局,当他们想这样做使用这些新的公共RTL的API。 这完全是从Android框架支持decorelated。 第一APP支持RTL是设置应用程序(模数它的一些供应商尚未成为RTL知道)。

第五,关于反向移植,我假设你正在谈论,如果这个功能应该是放在支持库,甚至在较旧的Android版本。 对于较旧的Android版本,这不能不要像他们的代码库被冻结完成。 对于支持库,我们不能这样做,因为我们不得不改变浏览等基本部件组成。

在你接近并提交Bug报告,如果你认为你已经发现了一个问题,或者只是文件进行任何功能请求,可能会丢失最后更具有建设性。



Answer 2:

我有同样的问题,只是我有一个slidingMenu(AKA导航抽屉中),所以它得到了更加古怪(这意味着你点击右上角的“向上”按钮,然后向抽屉左边...)。

有2个可能的解决方案:

  1. 通过代码,在每个活动:

     if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_LTR); 
  2. 按主题。 编辑您自己的自定义主题,并添加正确的路线。 例:

     <style name="AppTheme" parent="@style/Theme.Sherlock.Light"> <item name="actionBarStyle">@style/CustomActionBarStyle</item> <item name="android:actionBarStyle" tools:targetApi="honeycomb">@style/CustomActionBarStyle</item> </style> <style name="CustomActionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar"> <item name="android:layoutDirection" tools:targetApi="jelly_bean_mr1">ltr</item> </style> 


文章来源: Disable ActionBar RTL Direction