禁用ActionBar RTL方向

Android 4.2引入了RTL(BiDi)支持,开始使用它我只是按照说明(Android:supportsRtl属性清单文件中的元素并将其设置为“true”)

但是我的ActionBar标志也改变了我不想要的方向(右边显示了Logo)。 我想使用RTLfunction,但保持面向左侧的ActionBar …

换句话说,当语言方向为RTL时,如何在不改变Android 4.2上的ActionBar方向的情况下如何使用android:supportsRtl属性

有什么build议么 ?

Solutions Collecting From Web of "禁用ActionBar RTL方向"

首先,没有抱歉,当你处于RTL模式时,ActionBar应该反映出来。 这一点已经由比利时rtl专家检查和validation。 设置android:supportsRtl = true表示您的应用程序愿意支持RTL布局镜像。 如果你这样做,那么ActionBar(就像每个Android框架小部件一样)将被镜像,因为在LTR方向上显示它是没有意义的。

其次,关于访问左上或右上菜单的屏幕大小和人体工程学问题的说法与RTL支持无关。 如果在LTR模式下有这样的问题,那么在RTL模式下你将会有完全相同的问题。 这只与屏幕尺寸有关。

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

第四,Google Apps将支持RTL布局,并在他们希望的时候使用这些新的公共RTL API。 这完全从Android Framework支持decorelated。 支持RTL的第一个应用程序是设置应用程序(以它的一些提供程序为模,这些提供程序还不支持RTL)。

第五,关于backport,我认为你是在谈论这个function应该放在支持库还是旧的Android版本中。 对于较老的Android版本,这不能完成,因为他们的代码库被冻结。 对于支持库,我们不能这样做,因为我们必须更改View和其他基本的小部件组件。

如果你认为你发现了一个问题或者只是针对可能丢失的任何东西提出function请求,那么最后在你的方法中更有build设性,并提交一个错误报告。

我有同样的问题,只有我有一个slidingMenu(AKA导航抽屉),所以它甚至更怪(这意味着你点击右上angular的“向上”button,并显示在左边的抽屉…)。

有两种可能的解决scheme:

  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>