Como fazer um slide SlidingDrawer Android a partir da esquerda?
-
16-09-2019 - |
Pergunta
Eu estou usando um slidingDrawer
no meu aplicativo que tem seu manipulador colocado na parte inferior quando em modo retrato. Quando o usuário alterna para o modo paisagem (widescreen) Eu gostaria de ter o manipulador localizado na esquerda. Quando eu mudar a orientação da vertical para a horizontal, o manipulador é colocado à direita.
Eu tenho definido meu XML esquema como este:
<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"
>
Alguém tem uma idéia de como fazê-lo deslizar da esquerda para a direita?
Solução
Eu não acho que você pode, à excepção talvez, agarrando o código fonte SlidingDrawer
, fazer alterações a ele, e usando a sua versão modificada. Você também não pode fazer uma SlidingDrawer
que desce do topo.
Outras dicas
Eu encontrei uma maneira simples de fazer isso. Tudo que você tem a fazer é definir a rotação de 180º para o slidingDrawer, o conteúdo e a alça. Você pode fazer um semelhante SlidingDrawer que desce do topo, como eu fiz aqui .
Olhe para meus exemplos aqui, primeiro da direita para a esquerda, para ser capaz de ver as diferenças.
<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>
Agora, olhe o que eu alterado para torná-lo deslizar para fora da esquerda.
<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>
Note que eu também criou uma LinearLayout para definir como alça, e não mudá-lo de rotação, mas eu mudei a rotação dele de criança. Este foi para evitar um pequeno problema que tive, mas tudo está funcionando bem e é simples.
Eu tenho reescrito uma classe para isso e fez parte da minha biblioteca de código aberto. Levei quase uma semana para obtê-lo direito. Por favor, confira a minha SlidingTray na Aniqroid biblioteca de código aberto para o Android.
http://aniqroid.sileria.com/doc/api
Encontre o link de download e a documentação para a classe SlidingTray no link acima.
(Divulgação:. Eu sou o mantenedor do projeto)
Você pode usar o código postou neste resposta: Android SlidingDrawer de cima
A solução fornecida apresenta a definição da orientação do Slidingdrawer em XML também é simples, requerendo apenas uma classe e algumas adições em attrs.xml e estável, uma vez que é derivado de Androids Slidingdrawer de SDK. Eu também discutir por que eu não escolhi outros libs / soluções populares encontrados na internet / SO.
Quicklink à essência: MultipleOrientationSlidingDrawer (fonte & exemplo) @ essência