如何让Android SlidingDrawer从左侧滑出?

时间:2009-07-16 12:49:39

标签: android layout android-widget slidingdrawer

我在我的应用程序中使用slidingDrawer,在纵向模式下将其处理程序放在底部。当用户切换到横向模式(宽屏)时,我希望处理程序位于左侧。当我将方向从垂直方向更改为水平方向时,处理程序位于右侧。

我已经像这样定义了我的布局XML:

<SlidingDrawer
    android:id="@+id/l_drawer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:handle="@+id/l_handle"
    android:content="@+id/l_content"
    android:orientation="horizontal"
    android:layout_gravity="left"
    >

任何人都知道如何让它从左向右滑动?

4 个答案:

答案 0 :(得分:30)

我找到了一种简单的方法。您所要做的就是为slidingDrawer,内容和句柄设置180º的旋转。 您可以类似地制作一个从顶部下降的SlidingDrawer,就像我here一样。

首先从右到左看看我的例子,以便能够看到差异。

<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/slidingDrawer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:handle="@+id/handle"
    android:content="@+id/content">
    <ImageView android:id="@+id/handle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />
    <ImageView android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FF0000"
        android:src="@drawable/ic_launcher" />
</SlidingDrawer>

现在看看我改变了什么让它从左边滑出来。

<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/slidingDrawer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:handle="@+id/handle"
    android:content="@+id/content"
    android:rotation="180">
    <LinearLayout android:id="@+id/handle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ImageView android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"
            android:rotation="180" />
    </LinearLayout>
    <ImageView android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FF0000"
        android:src="@drawable/ic_launcher"
        android:rotation="180" />
</SlidingDrawer>

请注意,我还创建了一个LinearLayout来设置为句柄,并没有改变它的旋转,但我更改了它的子项的旋转。这是为了防止我遇到的一个小问题,但一切正常,而且很简单。

答案 1 :(得分:6)

除了抓住SlidingDrawer源代码,对其进行更改以及使用修改后的版本之外,我认为你不能。你同样不能使SlidingDrawer从顶部下降。

答案 2 :(得分:1)

我已经重写了一个类,并使其成为我的开源库的一部分。我花了差不多一个星期才把它弄好了。请查看 Aniqroid Android开源库中的 SlidingTray

http://aniqroid.sileria.com/doc/api

在上面的链接中找到SlidingTray类的下载链接和文档。

(披露:我是该项目的维护者。)

答案 3 :(得分:0)

您可以使用此答案中发布的代码:Android SlidingDrawer from top?

提供的解决方案功能在xml中设置Slidingdrawer的方向也很简单,只需要1个类和attrs.xml中的一些添加并且稳定,因为它来自SDK的Androids Slidingdrawer。我还讨论了为什么我没有选择在互联网/ SO上找到的其他流行的库/解决方案。

快速链接到要点:MultipleOrientationSlidingDrawer (source & example) @ gist