Как сделать так, чтобы Android SlidingDrawer выдвигался слева? - PullRequest
20 голосов
/ 16 июля 2009

Я использую 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 ]

30 голосов
/ 27 июня 2012

Я нашел простой способ сделать это. Все, что вам нужно сделать, это установить вращение на 180º для slideDrawer, содержимого и дескриптора. Вы также можете сделать 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, чтобы установить его как дескриптор, и не изменил его вращение, но я изменил вращение его дочернего элемента. Это должно было предотвратить небольшую проблему, которая у меня была, но все работает нормально и все просто.

6 голосов
/ 16 июля 2009

Я не думаю, что вы можете, кроме, возможно, взятия исходного кода SlidingDrawer, внесения изменений в него и использования вашей модифицированной версии. Точно так же вы не можете сделать SlidingDrawer, который спускается сверху.

1 голос
/ 28 августа 2011

Я переписал класс для этого и сделал его частью моей библиотеки с открытым исходным кодом. Мне потребовалась почти неделя, чтобы понять это правильно. Пожалуйста, ознакомьтесь с моей SlidingTray in Aniqroid библиотекой с открытым исходным кодом для Android.

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

Найдите ссылку на скачивание и документацию для класса SlidingTray в приведенной выше ссылке.

(Раскрытие информации: я поддерживаю проект.)

0 голосов
/ 26 августа 2013

Вы можете использовать код, указанный в этом ответе: Android SlidingDrawer сверху?

Предоставленное решение имеет функцию установки ориентации Slidingdrawer в формате xml, также просто: требуется всего 1 класс и некоторые дополнения в attrs.xml и он стабилен, поскольку он получен из Androids Slidingdrawer из SDK. Я также обсуждаю, почему я не выбрал другие популярные библиотеки / решения, найденные в Интернете / SO.

Быстрая ссылка на суть: MultipleOrientationSlidingDrawer (источник и пример) @ gist

...