2011-03-23 18 views
64

No estoy seguro de haber entendido bien el papel desempeñado por las varias carpetas de Android /res/layout.Carpetas de diseño de Android: diseño, layout-port, layout-land

layout: diseños generales

layout-port: diseño para widget que debe cambiar para la orientación vertical

layout-land: diseño para widget que debe cambiar para la orientación horizontal

Por ejemplo, en la aplicación Home muestra, En las carpetas layout-port y layout-land, solo hay un archivo home.xml.

¿He entendido bien?

+6

Algunos desarrolladores no podría darse cuenta qué tan importante es dominar este concepto, así que gracias por poner esto en SO. – whyoz

+0

Mi teoría HTML5 reemplazará esto en el futuro. – neferpitou

Respuesta

106

Si está en horizontal o en retrato, Android busca primero el archivo de diseño en el directorio -port o -land, si no se encuentra, vuelve al directorio de diseño predeterminado.

Puede leer sobre cómo proporcionar recursos alternativos here. Hay muchas más opciones que solo tierra y puerto.

+1

En este caso, los otros diseños no cambian según la orientación, por lo que solo están en la carpeta de diseño, mientras que el inicio es específico para retrato o paisaje – Cameron

+0

Me sorprende que no exista algún tipo de especificador de orientación para cada propiedad. Indicar diferentes valores para cada uno. Entiendo que en el caso de resoluciones que podrían ser complicadas, pero dado que solo hay dos orientaciones posibles (y siempre lo estarán), sería bueno no tener que mantener dos archivos separados para un diseño si, por ejemplo, solo una propiedad necesita diferenciar entre orientaciones. – RTF

10

Si coloca home.xml en la carpeta layout-port, cuando su dispositivo esté en orientación vertical, usará el archivo: layout-port/home.xml.

Si coloca home.xml en la carpeta layout-land, cuando su dispositivo esté en orientación horizontal, usará el archivo: layout-land/home.xml.

Significado para diferentes modos de orientación como vertical y horizontal ... usamos dos archivos home.xml; uno en layout-port y el otro en layout-land. Si, por el contrario, desea utilizar el mismo archivo de diseño para ambos, puede simplemente poner home.xml en la carpeta layout y eliminarlo de layout-land y layout-port.

+1

He creado archivos xml de distribución seprada para el diseño y el diseño de la tierra. Pero cuando cambio la orientación a horizontal, el android no muestra su archivo de layout-land. ¿Cuál es el problema? – YuDroid

+7

si tiene dos archivos de diseño en -port y -land y no cambian cuando cambia la orientación del dispositivo, probablemente haya especificado android: configChanges = "orientation" en el archivo AndroidManifest.xml. En ese caso, vuelva a especificar setContentView() en onConfigurationChanged() o elimine esa directiva AndroidManifest.xml. –

3

Crear carpeta en res layout-land o layout-port

layout-port: diseño para widget que debe cambiar para la orientación vertical

layout-land: diseño para widget que debe cambiar para la orientación horizontal