¿Cuál es la diferencia entre fill_parent y wrap_content?

En Android, cuando se distribuyen los widgets, ¿cuál es la diferencia entre fill_parent ( match_parent en API Level 8 y superior) y wrap_content ?

¿Hay alguna documentación a la que pueda señalar? Estoy interesado en entenderlo muy bien.

Cualquiera de los atributos se puede aplicar al tamaño horizontal o vertical de View (control visual). Se usa para establecer un tamaño de vista o diseño en función de su contenido o del tamaño de su diseño principal en lugar de especificar una dimensión explícitamente.

fill_parent (obsoleto y renombrado MATCH_PARENT en API Nivel 8 y superior)

Establecer el diseño de un widget para fill_parent lo forzará a expandirse para ocupar tanto espacio como esté disponible dentro del elemento de diseño en el que se ha colocado. Es más o menos equivalente a establecer el estilo de dock de un Windows Form Control en Fill .

Establecer un diseño o control de nivel superior para fill_parent lo obligará a ocupar toda la pantalla.

wrap_content

Establecer el tamaño de una Vista en wrap_content lo obligará a expandirse solo lo suficiente como para contener los valores (o controles secundarios) que contiene. Para los controles, como cuadros de texto (TextView) o imágenes (ImageView), esto ajustará el texto o la imagen que se muestra. Para los elementos de diseño, cambiará el tamaño del diseño para que se ajuste a los controles / diseños agregados como elementos secundarios.

Es aproximadamente el equivalente a establecer la propiedad Autosize del control de formulario de Windows en True.

Documentación en línea

Hay algunos detalles en la documentación del código de Android aquí .

  • FILL_PARENT (renombrado MATCH_PARENT en API Nivel 8 y superior), lo que significa que la Vista quiere ser tan grande como su elemento principal (menos relleno)

  • WRAP_CONTENT , lo que significa que la Vista quiere ser lo suficientemente grande como para incluir su contenido (más relleno)

fill_parent (en desuso) = match_parent
El borde de la vista secundaria se expande para coincidir con el borde de la vista principal.

wrap_content
El borde de la vista secundaria se ajusta cómodamente a su propio contenido.

Aquí hay algunas imágenes para aclarar las cosas. El verde y el rojo son TextViews . El blanco es un LinearLayout muestra a través de.

enter image description here

Cada View (una vista de TextView , una vista de imagen, un Button , etc.) debe establecer el width y el height de la vista. En el archivo de diseño xml, podría verse así:

 android:layout_width="wrap_content" android:layout_height="match_parent" 

Además de establecer el ancho y alto para match_parent o wrap_content , también puede establecerlos en algún valor absoluto:

 android:layout_width="100dp" android:layout_height="200dp" 

En general, eso no es tan bueno, sin embargo, porque no es tan flexible para dispositivos de diferentes tamaños. Después de haber entendido wrap_content y match_parent , lo siguiente que debe aprender es layout_weight .

Ver también

  • ¿Qué significa android: layout_weight?
  • Diferencia entre el relleno y el margen de una vista
  • Gravedad vs layout_gravity

XML para imágenes de arriba

Vertical LinearLayout

       

Horizontal LinearLayout

       

Nota

La explicación en esta respuesta asume que no hay margen o relleno . Pero incluso si lo hay, el concepto básico sigue siendo el mismo. El borde / espaciado de vista simplemente se ajusta por el valor del margen o relleno.

  • fill_parent hará que el ancho o alto del elemento sea tan grande como el elemento principal, en otras palabras, el contenedor.

  • wrap_content hará que el ancho o alto sea tan grande como sea necesario para contener los elementos dentro de él.

Haga clic aquí para obtener la referencia de ANDROID DOC

fill_parent :

Se organiza un componente para que el fill_parent sea ​​obligatorio de expandir para llenar los miembros de la unidad de diseño, tanto como sea posible en el espacio. Esto es coherente con la propiedad dockstyle del control de Windows. Un diseño o control de conjunto superior para fill_parent lo obligará a ocupar toda la pantalla.

wrap_content

Configure una vista del tamaño de wrap_content que será forzado para ver se expande para mostrar todo el contenido. Los controles TextView e ImageView , por ejemplo, se configuran en wrap_content y mostrarán todo su texto e imagen internos. Los elementos de diseño cambiarán el tamaño de acuerdo con el contenido. Configure una vista del tamaño del atributo wrap_content más wrap_content menos equivalente para establecer un control de Windows para True.

Para más detalles, consulte este enlace: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

wrap_content establece el tamaño de una Vista al minimum required to contain the contents it displays.

match_parent expands la vista to match the available space within the parent View, Fragment, or Activity.