首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从正确的角度把NavigationDrawer和SlidingPaneLayout - SlidingPaneLayout结合起来?

从正确的角度把NavigationDrawer和SlidingPaneLayout - SlidingPaneLayout结合起来?
EN

Stack Overflow用户
提问于 2013-12-11 08:57:07
回答 4查看 2.7K关注 0票数 1

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

目前,我在右边显示NavigationDrawer,在左边显示SlidingPaneLayout,总是有一点可见。

但是我想让NavigationDrawer在左边,SlidingPaneLayout在右边(就像在Hangout中)总是有一点可见。

问题:

我知道如何将NavigationDrawr移到另一边,但我无法找到(如果可能的话)如何将SlidingPaneLayout移到右侧?好让它从右边滑进来..。

我的解决方案

代码语言:javascript
复制
<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>

并使用一些包装方法,例如,为了获得更简单、更易读的代码,例如如下所示:

代码语言:javascript
复制
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();
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-11 09:09:11

将此设置为查看导航抽屉中的内容:

代码语言:javascript
复制
android:layout_gravity="left"

您可以尝试在开始时打开它,如下所示:

代码语言:javascript
复制
SlidingPaneLayout sp = (SlidingPaneLayout) findViewById(R.id.spl);
sp.openPane();

同时保持你的主要内容在左边,菜单在右边。

票数 1
EN

Stack Overflow用户

发布于 2015-04-10 09:03:38

经过我的研究和测试,android.support.v4.widget.SlidingPaneLayout不能从右向左滑动。唯一的效果是从左向右滑动。无论android:layout_gravity=startleftend还是right

票数 1
EN

Stack Overflow用户

发布于 2016-09-21 13:29:10

您可以通过添加滑块布局的布局方向来实现这一点。

代码语言:javascript
复制
layout = (SlidingPaneLayout) findViewById(R.id.sliding_pane_layout);
        layout.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

在此之前,请确保已为清单文件添加了属性android:supportsRtl="true"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20514665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档