2010-10-14 7 views
27

He visto numerosas aplicaciones que usan capas en sus diseños. Cuando hablo de capas, me refiero a capas en el eje z relativas a la vista del usuario. Una de estas aplicaciones es la aplicación de notificación de Craigslist, en la parte superior de la lista. Hay un signo más cerca de la parte inferior para permitir que los usuarios agreguen un elemento de la lista adicional.Capas de diseño? ¿Eje Z?

En mi caso, estoy utilizando con éxito un GestureListener para pasar las páginas. Funciona bien, pero me gustaría superponer una flecha transparente hacia la derecha y hacia la izquierda png en los bordes de las páginas si hay páginas atrás o delante de la que el usuario está actualmente.

He buscado, pero no estoy muy seguro de cómo tener 2 elementos de un diseño consumir el mismo espacio al mismo tiempo. En este caso, tiene el contenido de la página (diseño) y la necesidad de algo en la parte superior (eje z) de ese diseño.

¿Puede alguien señalarme en la dirección correcta?

Respuesta

81

Pruebe usar FrameLayout.

FrameLayout siempre coloca las cosas una encima de la otra y siempre en referencia a la esquina superior izquierda, por lo que deberá usar diseños separados dentro de FrameLayout para colocar los objetos donde desee en la pantalla.

Recuerda que Android colocará elementos en tu diseño en el orden en que están en la lista, así que coloca los objetos en la parte inferior del diseño que quieras cerca de la parte superior de la pantalla.

Aquí está un ejemplo rápido (no se olvide de añadir datos de cabecera XML adecuadas para el nodo superior):

<FrameLayout> 
    <RelativeLayout> 
    <!-- Place the objects you want on the bottom here --> 
    </RelativeLayout> 


    <RelativeLayout> 
    <!-- Place the objects you want on the top here --> 
    </RelativeLayout> 
</FrameLayout> 
13

pequeña adición a la respuesta anterior: para prevenir eventos onClick en "capa" inferior establecer el atributo se puede hacer clic = "true" al principio de la "capa"

<RelativeLayout 
.... 
android:clickable="true"/> 

de lo contrario, los botones en algo con eventos "clic" puede ser presionado a través de la capa superior.

Encontré este problema cuando traté de cubrir la interfaz de usuario por la capa RelativeLayout con fondo medio transparente.