我正在为从右到左的特定语言创建一个Android应用程序。我正在使用ActionBarSherlock(一个兼容的Android动作栏库)
我真正想要的是如何将操作栏的方向更改为RTL,即使用户没有将默认语言环境设置为RTL语言。
如果有人对标准的Android Action Bar有一个想法,那么它很有价值,可以帮助我们分享它
感谢
答案 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原样。没有必要切换订单,因为无论如何都没有左右方向 - 更改这将对您的用户造成极大的不和。
最重要的是,您无法使用现有的库 - 而且您可能不应该这样做。