androidnavigation-drawerslidingpanelayout

Combining NavigationDrawer and SlidingPaneLayout - SlidingPaneLayout from the right possible?


I'm using a NavigationDrawer as main menu in my app. Some of my fragments use the SlidingPaneLayout.

At the moment, I show the NavigationDrawer on the right and the SlidingPaneLayouton the left, always a little bit visible.

But I would like to have the NavigationDrawer on the left side and the SlidingPaneLayout on the right side (like in Hangouts) always a little bit visible.

Question:

I know how to get the NavigationDrawr to the other side, but I can't find out how (if possible) to move the SlidingPaneLayout to the right side? So that it slides in from the right...

my solution

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

and use some wrapping methods like for example following, for easier and more readable code:

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();
}

Solution

  • Set this to view inside navigation drawer:

    android:layout_gravity="left"
    

    you can try keeping it open in the start with:

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

    Also keep your main content on the left and menu on the right