2010-02-13 13 views
11

Quiero tener una vista emergente en la parte inferior de la página exactamente como la vista del teclado de software en la sección de redacción de la aplicación Mms. Se desliza desde la parte inferior, como si se estuviera agregando a LinearLayout orientado verticalmente , lo que hace que ListView sea más pequeño. Se convierte en una parte del diseño actual en lugar de aparecer sobre la parte superior. Me gustaría hacer esto exactamente con mi propia vista personalizada.Android: tener una vista arbitraria de la vista debajo de otra vista como el teclado del software

¿La pregunta tiene sentido?

Respuesta

18

¡Claro que tiene sentido!

Tengo una demo de SlidingPanel que demuestra la técnica general. Es un poco más complicado de lo que debe ser, ya que implementa una clase personalizada View.

Lo esencial es que realmente tiene su panel en el diseño para comenzar, colocado donde desea que esté, pero establece android:visibility="gone" para que no aparezca. Cuando quiera que sea visible, hágalo visible y configure un TranslateAnimation para deslizarlo.

+0

Guau, eso fue mucho más fácil que yo esperado. ¡Muchas gracias! – synic

+0

¿Es posible agregar esa vista programáticamente? Me gustaría usarlo en diferentes actividades y me pregunto si necesito ubicarlo en cada diseño en preparación ... –

+0

@SvenMenschner: Necesitaría agregar un constructor de argumento único para suministrar 'Context' y agregar un setter para que la velocidad sea utilizable fuera de un archivo de diseño. – CommonsWare

0

Hoy hay una vista de SlidingLayout para usar como explianed in this question.

sólo tiene que utilizar este lib y añadir lo siguiente en su diseño:

<com.wunderlist.slidinglayer.SlidingLayer 
xmlns:slidingLayer="http://schemas.android.com/apk/res-auto" 
android:id="@+id/slidingLayer1" 
android:layout_width="@dimen/layer_width" 
android:layout_height="@dimen/layer_height" 
slidingLayer:shadowDrawable="@drawable/sidebar_shadow" 
slidingLayer:shadowSize="@dimen/shadow_size" 
slidingLayer:offsetDistance="@dimen/offset_distance" 
slidingLayer:previewOffsetDistance="@dimen/preview_offset_distance" 
slidingLayer:stickTo="top|bottom|right|left" 
slidingLayer:changeStateOnTap="true"> 

y añadir lo siguiente a su fichero de construcción Gradle:

compile 'com.wunderlist:sliding-layer:1.2.5' 

puede descargar una aplicación de demostración de here

Cuestiones relacionadas