1

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

4 に答える 4

1

これを設定して、ナビゲーション ドロワー内を表示します。

android:layout_gravity="left"

最初は開いたままにしておくことができます:

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

また、メイン コンテンツを左側に、メニューを右側に配置します。

于 2013-12-11T09:09:11.533 に答える
0

Step-1

In order to support RTL in your app, you first need to add android:supportsRtl="true" to the element in your manifest file.

Step-2

Add RTL support in SlidingPaneLayout

android:layoutDirection="rtl"

Step-3 Add LTR support in child views of SlidingPaneLayout

android:layoutDirection="ltr"

    <SlidingPane
        android:id="@+id/slidingPanelLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layoutDirection="rtl">

        <include
            layout="@layout/left_drawer"
            android:layout_width="250dp"
            android:layout_height="match_parent"
            android:layoutDirection="ltr" />

        <include
            layout="@layout/view_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layoutDirection="ltr"
          />
    </SlidingPane>

Note: add LTR support in both left_drawer.xml, view_container.xml

于 2020-12-08T05:53:57.650 に答える