prom85 prom85 - 2 months ago 17
Android Question

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

Answer

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

Comments