如何使Android 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" > 

任何人有一个想法,如何使它从左到右滑动?

Solutions Collecting From Web of "如何使Android SlidingDrawer从左侧滑出?"

我不认为你可以,除了抓住SlidingDrawer源代码,修改它,并使用你的修改版本。 您同样无法制作从顶部下降的SlidingDrawer

我find了一个简单的方法来做到这一点。 您只需要为slidingDrawer,内容和句柄设置180º的旋转angular度。 你可以类似地制作一个从顶端下来的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"> <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> 

请注意,我也创build了一个LinearLayout来设置为句柄,并没有改变它的旋转,但我改变了它的孩子的旋转。 这是为了防止我有一个小问题,但一切工作正常,这很简单。

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

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

在上面的链接中findSlidingTray类的下载链接和文档。

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

你可以使用这个答案中发布的代码: 从顶部的Android SlidingDrawer?

提供的解决scheme的特点是在xml中设置Slidingdrawer的方向也很简单,只需要一个类,在attrs.xml中添加一些,并且稳定,因为它是从SDK的Android Slidingdrawer派生的。 我也讨论为什么我没有select在互联网/ SO上find其他stream行的库/解决scheme。

快速链接的要点: MultipleOrientationSlidingDrawer(源&示例)@ gist