我正在编写一个多语言应用程序,其中一种语言是阿拉伯语,当选择我想以编程方式RTLize所有甚至抽屉片段时,请在下面找到布局xml:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/container_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
</LinearLayout>
<FrameLayout
android:id="@+id/container_body"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</FrameLayout>
</LinearLayout>
<fragment
android:id="@+id/fragment_navigation_drawer"
android:name="com.customview.albertaadm.testapplication.FragmentDrawer"
android:layout_width="@dimen/nav_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
app:layout="@layout/fragment_navigation_drawer"
tools:layout="@layout/fragment_navigation_drawer" />
所以我设法RLT操作栏和整个按钮,但使用以下代码:
if (Lang.equals("ar")) {
rtlizer = new ActionBarRtlizer(this, "toolbar");
ViewGroup actionBarView = rtlizer.getActionBarView();
ViewGroup homeView = (ViewGroup) rtlizer.findViewByClass("HomeView", actionBarView);
rtlizer.flipActionBarUpIconIfAvailable(homeView);
RtlizeEverything.rtlize(actionBarView);
RtlizeEverything.rtlize(homeView);
但是如何让fragment_navigation_drawer在右边重新定位并让它向右打开? 谢谢。
答案 0 :(得分:1)
您可以通过将@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.main_p)
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
setContentView(R.layout.main_L)
}
}
添加到清单文件中的android:supportsRtl="true"
元素来实现此目的。但问题是Native RTL支持仅在Android 4.2之后才出现。如果您的应用程序支持4.2之前的RTL将无法正常工作。更多信息: - http://android-developers.blogspot.in/2013/03/native-rtl-support-in-android-42.html