21

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

我已经像这样定义了我的布局 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

4 回答 4

30

我找到了一种简单的方法来做到这一点。您所要做的就是为slidingDrawer、内容和手柄设置180º的旋转。您可以类似地制作一个从顶部下降的 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>

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

于 2012-06-27T14:21:04.820 回答
6

SlidingDrawer除了获取源代码、对其进行更改并使用修改后的版本之外,我认为您无法做到。你同样不能做一个SlidingDrawer从顶部下降的。

于 2009-07-16T19:45:19.817 回答
1

我已经为此重写了一个类,并将其作为我的开源库的一部分。我花了将近一周的时间才把它弄好。请在适用于 Android 的Aniqroid开源库中查看我的SlidingTray 。

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

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

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

于 2011-08-28T16:47:49.920 回答
0

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

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

快速链接到要点:MultipleOrientationSlidingDrawer(源代码和示例)@要点

于 2013-08-26T10:49:35.533 回答