Android SlidingDrawer desde la parte superior?

¿Hay alguna manera de hacer que el cajón se deslice de arriba hacia abajo?

La clase predeterminada de SlidingDrawer no permite esto. Puede usar la clase Panel desde aquí para obtener algo muy similar: http://code.google.com/p/android-misc-widgets/

http://www.ohloh.net/p/android-misc-widgets

He encontrado una manera simple de hacer eso. Todo lo que tienes que hacer es establecer la rotación de 180º para el deslizador deslizante, el contenido y el mango. Es más fácil de entender con un ejemplo, así que mira lo que he hecho:

Primero, te mostraré mi viejo SlidingDrawer, de abajo hacia arriba.

     

Ahora mira los cambios que hice, configurando la rotación de 180º

       

Tenga en cuenta que también creé un LinearLayout para establecer como handle, y no cambié su rotación, pero cambié la rotación de su hijo. Esto fue para evitar un pequeño problema que tuve, pero todo está funcionando bien y es simple.

Estaba muy insatisfecho con las soluciones proporcionadas aquí:

  • La clase Panel de http://code.google.com/p/android-misc-widgets/ no era muy intuitiva de usar y también tenía fallas visuales y fallas visuales (inutilizable para uso productivo) y ningún documento en absoluto.
  • SlidingTray clase SlidingTray de http://aniqroid.sileria.com/doc/api/ estaba anidada en una lib que necesitaba demasiada dependencia y para mí no conseguí que funcionara en absoluto
  • Usar android:rotation="180" requiere API Nivel 11, y mi objective es 10.

(sin ofender a los desarrolladores respectivos, tratando de ser objective aquí)

Así que mi solución fue extraer SlidingTray de esta biblioteca http://aniqroid.sileria.com/doc/api/ (de Ahmed Shakil) y la refactoré un poco, ya que tenía algunos caprichos necesarios para ser utilizada dentro de la lib de Ahmed. SlidingTray se basa en el propio SlidingDrawer Androids, así que supongo que es estable. Mi modificación consiste en 1 clase a la que llamé MultipleOrientationSlidingDrawer y tienes que agregar declare-styleables en tu attrs.xml. Aparte de eso, tiene el mismo uso que SlidingDrawer con el atributo de “orientación” adicional.

Échale un vistazo: MultipleOrientationSlidingDrawer (fuente y ejemplo) @ gist

Aquí hay un ejemplo de uso (también provisto en la esencia)

         

Descargo de responsabilidad: Todos los créditos van a respectivo dev. No probé esta solución exhaustivamente, funciona muy bien con TOP y BOTTOM establecidos en XML. No intenté usarlo programáticamente.

Tuve que hacer lo mismo para uno de mis proyectos y terminé escribiendo mi propio widget para esto. Lo llamé SlidingTray ahora es parte de mi biblioteca Aniqroid de fuente abierta.

http://aniqroid.sileria.com/doc/api/ (busque descargas en la parte inferior o use el proyecto de código de google para ver más opciones de descarga: http://code.google.com/p/aniqroid/downloads/list )

La documentación de la clase está aquí: http://aniqroid.sileria.com/doc/api/com/sileria/android/view/SlidingTray.html