将操作栏方向改为从右到左

时间:2013-07-07 13:18:28

标签: android actionbarsherlock android-actionbar

我正在为从右到左的特定语言创建一个Android应用程序。我正在使用ActionBarSherlock(一个兼容的Android动作栏库) 我真正想要的是如何将操作栏的方向更改为RTL,即使用户没有将默认语言环境设置为RTL语言。
如果有人对标准的Android Action Bar有一个想法,那么它很有价值,可以帮助我们分享它 感谢

5 个答案:

答案 0 :(得分:59)

从Android API Level 17+开始,它本身支持RTL。要强制整个布局为RTL,包括ActionBar,请执行以下操作。

编辑您的AndroidManifest.xml并将android:supportsRtl="true"添加到您的<application>标记中,然后将以下行添加到您的活动'onCreate()方法forceRTLIfSupported();的顶部,然后插入以下内容功能进入你的活动。

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void forceRTLIfSupported()
{
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
        getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
    }
}

当然这只对调试有帮助。使用View.LAYOUT_DIRECTION_LOCALE进行生产构建,这样只有当用户选择的系统位置/语言语言环境支持RTL时,才会更改布局。

希望有所帮助。

答案 1 :(得分:4)

我们必须相信编程中的强大规则:

  

当您了解工具时,一切都将成为可能。

因此,从现在起,您可以使用此库真正 RTLize您的动作栏https://github.com/semsamot/ActionBarRTLizer

当然,它与 API Level 7 + 兼容。

答案 2 :(得分:2)

Booger是对的。你提到的“Nabz Bazar”应用程序在每个版本的android上都没有对齐。正如你所看到的here ABS在Android 4.0或更新版本上并没有真正做任何事情,该应用程序的截图在4.2安卓上。

答案 3 :(得分:2)

使用它,它将从rtl进行布局,但这是在xml的父根中

    android:layoutDirection="rtl"
    android:textDirection="rtl"

答案 4 :(得分:1)

我很确定你无法按照自己的意愿行事。 ActionBar模式非常具体,支持它的库只支持定义的模式(左上角有图标,然后是右边的标题和动作按钮)。

更改测试就像更改应用中的区域设置和文本一样简单(正如您已经提到的那样)。

支持标准ActionBar模式的库不支持更改ActionBar本身内元素的位置 - 因为您所描述的不是受支持的UI模式。

我认为你应该保持AB原样。没有必要切换订单,因为无论如何都没有左右方向 - 更改这将对您的用户造成极大的不和。

最重要的是,您无法使用现有的库 - 而且您可能不应该这样做。