我正在为一种从右到左的特定语言创建一个android应用程序,我正在使用ActionBarSherlock(一个兼容的android操作栏库)。我真正想要的是如何改变方向的行动栏RTL,即使用户没有设置默认的地区RTL语言。如果任何人有一个想法,即使是标准的android操作栏,这是有价值的,可能有助于请分享它。谢啦,谢啦
u0sqgete1#
从Android API Level 17+开始,它原生支持RTL。要强制整个布局为RTL,包括ActionBar,请执行以下操作。编辑AndroidManifest.xml并将android:supportsRtl="true"添加到<application>标记,然后将以下代码行添加到Activities的onCreate()方法forceRTLIfSupported();的顶部,然后将以下函数插入到Activity中。
android:supportsRtl="true"
<application>
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,这样只有当用户选择的系统位置/语言(即locale)支持RTL时,布局才会改变。
View.LAYOUT_DIRECTION_LOCALE
62o28rlo2#
使用这个,它将从rtl布局,但这在你的xml的父根
android:layoutDirection="rtl" android:textDirection="rtl"
j9per5c43#
我们必须相信编程中的一个强大规则:当你知道你的工具时,一切都将成为可能。因此,从现在开始,您可以使用此库真正RTL化操作栏:https://github.com/semsamot/ActionBarRTLizer当然,它与**API Level 7+**兼容。
zqdjd7g94#
Booger是对的。你提到的“Nabz Bazar”应用程序并不是在每一个安卓版本上都是右对齐的。正如你所看到的,here ABS在安卓4.0或更高版本上并没有做任何事情,该应用程序的截图是在4.2安卓上。
jrcvhitl5#
我很确定你不能做你所要求的。ActionBar模式是非常具体的,支持它的库只支持定义的模式(在左上角有图标,然后在右边布局标题和操作按钮)。更改测试就像更改应用程序中的区域设置和文本一样简单(正如您已经提到的)。支持标准ActionBar模式的库将不支持更改ActionBar本身中元素的位置-因为您所描述的不是受支持的UI模式。我认为你应该保持AB的原样。没有必要改变顺序,因为没有左右方向--改变这个方向会让你的用户非常不舒服。底线是,你不能用现有的库来实现这一点--而且你可能也不应该这样做。
1l5u6lss6#
如果您的项目完全是RTL语言,则可以使用其中的一个或全部。在AndroidManifest.xml上设置
<application android:supportsRtl="true" >
在Xml.file中设置
在java.class中设置
c2e8gylq7#
Kotlin:
将forceRTLIfSupported()添加到“活动”的 onCreate() 方法的顶部,然后将以下函数插入“活动”:
forceRTLIfSupported()
fun forceRTLIfSupported(){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){ window.decorView.layoutDirection = View.LAYOUT_DIRECTION_RTL } }
7条答案
按热度按时间u0sqgete1#
从Android API Level 17+开始,它原生支持RTL。要强制整个布局为RTL,包括ActionBar,请执行以下操作。
编辑AndroidManifest.xml并将
android:supportsRtl="true"
添加到<application>
标记,然后将以下代码行添加到Activities的onCreate()方法forceRTLIfSupported();
的顶部,然后将以下函数插入到Activity中。当然,这只对调试有帮助。在生产构建中使用
View.LAYOUT_DIRECTION_LOCALE
,这样只有当用户选择的系统位置/语言(即locale)支持RTL时,布局才会改变。62o28rlo2#
使用这个,它将从rtl布局,但这在你的xml的父根
j9per5c43#
我们必须相信编程中的一个强大规则:
当你知道你的工具时,一切都将成为可能。
因此,从现在开始,您可以使用此库真正RTL化操作栏:https://github.com/semsamot/ActionBarRTLizer
当然,它与**API Level 7+**兼容。
zqdjd7g94#
Booger是对的。你提到的“Nabz Bazar”应用程序并不是在每一个安卓版本上都是右对齐的。正如你所看到的,here ABS在安卓4.0或更高版本上并没有做任何事情,该应用程序的截图是在4.2安卓上。
jrcvhitl5#
我很确定你不能做你所要求的。ActionBar模式是非常具体的,支持它的库只支持定义的模式(在左上角有图标,然后在右边布局标题和操作按钮)。
更改测试就像更改应用程序中的区域设置和文本一样简单(正如您已经提到的)。
支持标准ActionBar模式的库将不支持更改ActionBar本身中元素的位置-因为您所描述的不是受支持的UI模式。
我认为你应该保持AB的原样。没有必要改变顺序,因为没有左右方向--改变这个方向会让你的用户非常不舒服。
底线是,你不能用现有的库来实现这一点--而且你可能也不应该这样做。
1l5u6lss6#
如果您的项目完全是RTL语言,则可以使用其中的一个或全部。
在AndroidManifest.xml上设置
在Xml.file中设置
在java.class中设置
c2e8gylq7#
Kotlin:
将
forceRTLIfSupported()
添加到“活动”的 onCreate() 方法的顶部,然后将以下函数插入“活动”: