片段RTL与actionBar

时间:2015-08-02 12:45:43

标签: java android android-fragments

我正在编写一个多语言应用程序,其中一种语言是阿拉伯语,当选择我想以编程方式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在右边重新定位并让它向右打开? 谢谢。

1 个答案:

答案 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