我在应用程序中使用NavigationDrawer作为主菜单。我的某些片段使用SlidingPaneLayout

此刻,我在右侧显示NavigationDrawer,在左侧显示SlidingPaneLayout,总是有点可见。

但是我想让NavigationDrawer在左侧,而SlidingPaneLayout在右侧(像在环聊中一样)总是有点可见。

题:

我知道如何将NavigationDrawr移到另一侧,但是我找不到(如果可能)如何将SlidingPaneLayout移到右侧?这样它就可以从右侧滑入...

我的解决方案

<android.support.v4.widget.SlidingPaneLayout
    android:id="@+id/sliding_pane_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/fragment_main_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:layout_marginRight="0dp"
        android:orientation="vertical" >

        <include
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            layout="@layout/card_toast_container" />

        <FrameLayout
            android:id="@+id/fragment_main"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

    <!-- marginLeft: set it to width - 150 in your code!!! -->

    <FrameLayout
        android:id="@+id/fragment_slider"
        android:layout_width="150dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:layout_marginLeft="0dp" />
</android.support.v4.widget.SlidingPaneLayout>


并使用一些包装方法(例如以下示例)来获得更简单,更易读的代码:

public boolean isSliderMenuShown()
{
    return !mSlidingLayout.isOpen();
}

public static void openSlider(boolean isSliderLeft, MySlidingPaneLayout slidingLayout)
{
    slidingLayout.closePane();
}

public static void closeSlider(boolean isSliderLeft, MySlidingPaneLayout slidingLayout)
{
    slidingLayout.openPane();
}

最佳答案

将此设置为在导航抽屉中查看:

android:layout_gravity="left"


您可以尝试从一开始就将其保持打开状态:

SlidingPaneLayout sp = (SlidingPaneLayout) findViewById(R.id.spl);
sp.openPane();


同时将主要内容保留在左侧,菜单保留在右侧

10-04 12:28