2013-12-11 4 views
1

Я использую NavigationDrawer в качестве главного меню в своем приложении. Некоторые из моих фрагментов используют SlidingPaneLayout.Объединение NavigationDrawer и SlidingPaneLayout - SlidingPaneLayout с правой стороны?

На данный момент я показываю NavigationDrawer справа и SlidingPaneLayout слева, всегда немного видимый.

Но я хотел бы иметь NavigationDrawer с левой стороны, а SlidingPaneLayout с правой стороны (как в Hangouts) всегда немного видно.

Вопрос:

Я знаю, как получить 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(); 
} 
+0

Привет @ promo85, получил какое-либо решение для перемещения SlidingPaneLayout вправо .. PLS помочь мне, если вы нашли ... – Adi

+0

Я только начинаю с opend 'SlidingPaneLayout' ... И я добавил код для вас мой главный пост, который должен объяснить, как получить меню в правой части ... – prom85

ответ

1

Установите это для просмотра внутреннего ящика для навигации:

android:layout_gravity="left" 

Вы можете попробовать держать его открытым в начале с:

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

также сохранить свой основной контент слева и меню на правой

+0

Я знаю, как получить «NavigationDrawer» с левой стороны, моя проблема - «SlidingPaneLayout» ... Я сделаю это более ясно в моем вопросе ... – prom85

+0

попробуйте вызвать openPane() в начале, так что это будет вести себя как видеовстреча. –

+0

Я должен совершить, я об этом не думал, хотя иногда я открываю действия с открытым «SlidingPaneLayout» ... Я посмотрю обратные вызовы open/close и если их можно будет использовать правильно, без каких-либо недостатков ... но я думаю, что это действительно может быть возможным решением ... Хотя мне нужно изменить логику в моем полном приложении для этого ... – prom85

1

После моих исследований и испытаний, android.support.v4.widget.SlidingPaneLayout не может красть из права оставил. Единственный эффект - выталкивание слева направо. Не имеет значения android:layout_gravity=startleftend или right.

1

Вы можете достичь этого путем добавления направление макета для вас Slidingpanel компоновки

layout = (SlidingPaneLayout) findViewById(R.id.sliding_pane_layout); 
     layout.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 

до этого убедитесь, что вы добавили свойство android:supportsRtl="true" для файла манифеста.

Смежные вопросы