我在我的应用程序中使用NavigationDrawer作为主菜单。我的一些片段使用SlidingPaneLayout。
目前,我在右边显示NavigationDrawer,在左边显示SlidingPaneLayout,总是有一点可见。
但是我想让NavigationDrawer在左边,SlidingPaneLayout在右边(就像在Hangout中)总是有一点可见。
问题:
我知道如何将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();
}发布于 2013-12-11 09:09:11
将此设置为查看导航抽屉中的内容:
android:layout_gravity="left"您可以尝试在开始时打开它,如下所示:
SlidingPaneLayout sp = (SlidingPaneLayout) findViewById(R.id.spl);
sp.openPane();同时保持你的主要内容在左边,菜单在右边。
发布于 2015-04-10 09:03:38
经过我的研究和测试,android.support.v4.widget.SlidingPaneLayout不能从右向左滑动。唯一的效果是从左向右滑动。无论android:layout_gravity=是start,left,end还是right。
发布于 2016-09-21 13:29:10
您可以通过添加滑块布局的布局方向来实现这一点。
layout = (SlidingPaneLayout) findViewById(R.id.sliding_pane_layout);
layout.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);在此之前,请确保已为清单文件添加了属性android:supportsRtl="true"。
https://stackoverflow.com/questions/20514665
复制相似问题