如何在右侧显示SlidingPaneLayout?

时间:2016-04-16 05:48:55

标签: android slidingmenu

嗨,我是Android的初学者,在我的应用程序中,我必须在右侧显示SlidingPaneLayout,但使用我的下面的代码,它来自左侧。

请帮帮我。

如何让它在右侧?

第二个我的要求是我的SlidingPaneLayout必须在Action栏上重叠,但使用我的下面的xml代码SlidingPaneLayout显示如下图像

请建议我如何解决这两个问题

toolbar_layout: -

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/ColorPrimary"
    android:elevation="4dp"
    >

</android.support.v7.widget.Toolbar>

activity_sliding: -

<android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/SlidingPanel"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="right">

        <ListView
            android:id="@+id/MenuList"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </ListView>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:background="#101010"
        android:orientation="vertical" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/android_robot" />
    </LinearLayout>

</android.support.v4.widget.SlidingPaneLayout>

main_layout: -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include
        android:id="@+id/tool_bar"
        layout="@layout/toolbar_layout">
    </include>

    <include
        android:id="@+id/SlidingPanel"
        layout="@layout/activity_sliding">
    </include>

</LinearLayout>

enter image description here

1 个答案:

答案 0 :(得分:4)

在您的清单中,将以下属性添加到开始<application>标记。

android:supportsRtl="true"

然后将此属性添加到布局中的开始SlidingPaneLayout标记。

android:layoutDirection="rtl"

最后,将tool_bar <include>元素移至LinearLayout内的主要内容SlidingPaneLayout,并调整ImageView的高度和重量。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#101010"
    android:orientation="vertical">

    <include
        android:id="@+id/tool_bar"
        layout="@layout/toolbar_layout">
    </include>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@drawable/android_robot" />

</LinearLayout>

请注意View的孩子SlidingPaneLayout将继承rtl layoutDirection。如果孩子View的布局行为受到方向的影响,这可能会导致问题。例如,水平导向的LinearLayout将从右侧开始布置其子项。通过在受影响的android:layoutDirection="ltr"上设置View,可以轻松解决此问题。

另请注意,此示例硬编码布局中的方向。如果您需要在应用程序范围内同时支持LTR和RTL布局,则需要以编程方式执行此操作,并考虑设备的默认方向。