android - studio - ¿Cuál es la diferencia entre fill_parent y wrap_content?
match_parent y wrap parent (6)
Cualquiera de los atributos se puede aplicar al tamaño horizontal o vertical de la vista (control visual). Se utiliza para establecer un tamaño de Vista o Diseños según su contenido o el tamaño de su diseño primario en lugar de especificar explícitamente una dimensión.
fill_parent
(en desuso y renombrado MATCH_PARENT
en el nivel 8 de API y superior)
La configuración del diseño de un widget en fill_parent lo forzará a expandirse para ocupar todo el espacio disponible dentro del elemento de diseño en el que se ha colocado. Es aproximadamente equivalente a configurar el estilo de acoplamiento de un Control de formulario de Windows para 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 forzará a expandirse solo lo suficiente para contener los valores (o controles secundarios) que contiene. Para 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 más o menos el equivalente a configurar una propiedad de Autosize
Windows Form Control en True.
Documentacion en linea
Hay algunos detalles en la documentación del código de Android here .
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 donde se pueda señalar? Me interesa entenderlo muy bien.
fill_parent
(obsoleto) = match_parent
El borde de la vista secundaria se expande para coincidir con el borde de la vista primaria.
wrap_content
El borde de la vista infantil se ajusta perfectamente 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.
Cada View
(una vista de TextView
, una vista de imagen, un Button
, etc.) debe establecer el width
y la 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 configurar el ancho y el alto para match_parent
o wrap_content
, también puede establecerlos en algún valor absoluto:
android:layout_width="100dp"
android:layout_height="200dp"
Sin embargo, generalmente eso no es tan bueno, porque no es tan flexible para dispositivos de diferentes tamaños. Una vez que haya 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 las imágenes de arriba
LinearLayout Vertical
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=wrap height=wrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=wrap"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=match"
android:background="#c5e1b0"/>
</LinearLayout>
LinearLayout horizontal
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapWrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapMatch"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="MatchMatch"
android:background="#c5e1b0"/>
</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 la vista se ajusta simplemente por el valor del margen o el relleno.
fill_parent
:
Se fill_parent
diseño para el fill_parent
que se expandirá para llenar los miembros de la unidad de diseño, tanto como sea posible en el espacio. Esto es consistente 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
Configurar una vista del tamaño de wrap_content
se verá obligado a ver se expande para mostrar todo el contenido. Los controles TextView e ImageView , por ejemplo, están configurados para wrap_content
mostrará todo el texto e imagen internos. Los elementos de diseño cambiarán el tamaño según el contenido. Configure una vista del tamaño del atributo wrap_content
aproximadamente equivalente a establecer un control de Windows para True.
Para obtener más información, visite este enlace: here
wrap_content establece el tamaño de una Vista en el 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.
FILL_PARENT
(renombrado comoMATCH_PARENT
en el nivel de API 8 y superior), lo que significa que la vista quiere ser tan grande como su padre (menos el relleno)WRAP_CONTENT
, lo que significa que la vista quiere ser lo suficientemente grande como para incluir su contenido (más el relleno)
fill_parent
hará que el ancho o alto del elemento sea tan grande como el elemento padre, en otras palabras, el contenedor.wrap_content
hará que el ancho o el alto sea tan grande como sea necesario para contener los elementos dentro de él.