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

Respuestas:

1235

Son lo mismo (en API Nivel 8+). Uso match_parent.

FILL_PARENT (renombrado MATCH_PARENT en API Level 8 y superior), lo que significa que la vista quiere ser tan grande como su padre (menos relleno)

...

fill_parent: La vista debe ser tan grande como su padre (menos el relleno). Esta constante está en desuso a partir del nivel de API 8 y se reemplaza por match_parent.

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

Matt Ball
fuente
55
si escribo la aplicación para 1.6 y 2.2, usaré fill_parent para compatibilidad, ¿es correcto?
emeraldhieu
12
Debe haber algunas diferencias ¿verdad? De lo contrario, ¿por qué Google lo desaprobó y renombró el nuevo?
stuckedoverflow
49
@Halim No, no hay diferencia : ambos se definen como constantes -1. Me siento mejor al respecto, tampoco entiendo la mejora en eso ... :-)
arpy
2
@jlovison No, no hay diferencias. Ambos son -1. Obtiene el error porque la plataforma anterior no conoce el nuevo nombre de la misma constante.
Tapirboy
16
¡Es tan extraño que Android Studio todavía pone "fill_parent" en todos los diseños creados por plantilla predeterminados! Sé que son lo mismo, pero sigo volviendo a esta pregunta SO todos los años para asegurarme de que nadie haya descubierto que realmente hay una diferencia. ¿Puede el equipo de Google / Android cambiar el valor predeterminado de "fill_parent" a "match_parent"? ¡Gracias por adelantado! :)
swooby
246

Google cambió el nombre para evitar confusiones.

El problema con el nombre antiguo fill parentera que implica que afecta las dimensiones del padre, mientras que match parentdescribe mejor el comportamiento resultante: emparejar la dimensión con el padre.

Ambas constantes se resuelven al -1final y, por lo tanto, dan como resultado un comportamiento idéntico en la aplicación. Irónicamente, este cambio de nombre hecho para aclarar las cosas parece haber agregado confusión en lugar de eliminarlo.

Tapirboy
fuente
17
... excepto con el hijo de RelativeLayout con width = match_parent y, digamos, leftOf another. No coincide con la dimensión de su padre, llena lo que queda en ella. Eso solo sirve para CAUSAR confusión.
kaay
77
Como FILL_PARENT y MATCH_PARENT significa que la vista quiere ser tan grande como su padre, menos el relleno del padre ¿no es ese el espacio interior en lugar de las dimensiones exteriores? ¡Ahora estoy aún más confundido!
Caltor
@bnieland He eliminado las referencias a las dimensiones internas y externas, ya que no están de acuerdo con la documentación de Google en developer.android.com/reference/android/view/… aunque puedo ver una cita similar (sin fundamento) en sevennet.org / 2014/11/22 / ... que es de donde podría haber obtenido su información.
Caltor
28

Funcionalmente no hay diferencia, Google acaba de cambiar el nombre de fill_parent a match_parent, de API nivel 8 (Android 2.2). FILL_PARENT todavía está disponible por razones de compatibilidad.

LayoutParams.FILL_PARENTy LayoutParams.MATCH_PARENTambos tienen valor -1. No estoy seguro de qué tentaron a google a cambiar de Rellenar padre para emparejar padre :)

Dado que la mayoría de los phones are >= Android 2.2... debe usar Match Parent para compatibilidad futura ... ¡no estoy seguro de cuándo interrumpirán la constante Fill Parent más antigua!

Umair
fuente
11

Por razones de compatibilidad, es mejor apegarse a fill_parent, es decir, cuando se admiten dispositivos inferiores a API 8. Pero si su aplicación está dirigida a API 8 y hacia arriba, debería usar match_parent en su lugar.

Olumide Oyetoke
fuente
8
Sin embargo, solo compatibilidad con versiones anteriores. Si FILL_PARENTestá en desuso (como mencionó Matt Ball anteriormente), entonces la única opción para la compatibilidad con versiones anteriores es MATCH_PARENT.
2
De acuerdo, pero si tiene previsto escribir código para dispositivos de nivel API inferior, por ejemplo: 2.3,2.2,2.1 por el momento, necesita usar FILL_PARENT. Tuve algunos problemas al usar match_parent para versiones anteriores.
MSA
Es hora de eliminar esta respuesta. Ya no es relevante y puede dar el consejo equivocado a los nuevos desarrolladores
Tim
8

FILL_PARENTestá en desuso en el nivel 8 de la API y MATCH_PARENTutiliza una API de nivel superior

Avanish Kumar
fuente
8

match_parent se usa en lugar de fill_parent y lo configura para ir tan lejos como lo haga el padre. Solo usa match_parent y olvídate de fill_parent . Completamente abandoné fill_parent y todo es perfecto como siempre.

Consulta aquí para más.

Koech
fuente
6

Solo para darle un nombre más cercano a su acción real . "fill_parent"no llena el espacio restante como su nombre lo implicaría (para eso usa el atributo de peso). En cambio, ocupa tanto espacio como su diseño principal. Por eso el nuevo nombre es"match_parent"

Jawad Zeb
fuente
2
No entiendo la lógica de las personas cuando afirman esto. Los padres tienen relleno. O niño queda De otro. ¿El niño lo está igualando? No. ¿está llenando el espacio restante? Aquí en lo que aparentemente es Bizzarro World, respondemos: sí.
kaay
1
@kaay Estoy totalmente de acuerdo en que el nuevo nombre es peor que el anterior. Pero lo que Google dice va.
Caltor
6

Ambos tienen una funcionalidad similar, la única diferencia es que fill_parent se usa hasta el nivel API 8 y match_parent se usa después del nivel API 8 o nivel superior.

Praveen Gaur
fuente
6

Cuando establece el diseño widthy height como match_parenten la XMLpropiedad, ocupará el área completa que tiene la vista principal, es decir, será tan grande como la principal.

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

El padre de la liebre es rojo y el niño es verde. El niño ocupa toda el área. Porque es widthy height son match_parent.

ingrese la descripción de la imagen aquí

Nota: Si se aplica un relleno a los padres, ese espacio no se incluiría.

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0"
    android:paddingTop="20dp"
    android:paddingBottom="10dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

ingrese la descripción de la imagen aquí

Entonces TextView hight = 300dp (padre alto) - (20 (paddingTop) +10 (paddingBottom)) = (300-30) dp = 270 dp

fill_parent Vs match_parent

fill_parent es el nombre anterior de match_parent

Para API Nivel 8 y superior fill_parentrenombrado como match_parenty fill_parentahora está en desuso.

Así fill_parenty match_parentson iguales.

Documentación de API para fill_parent

La vista debe ser tan grande como su padre (menos el relleno). Esta constante está en desuso a partir del Nivel 8 de API y se reemplaza por {@code match_parent}.


fuente
4

match_parent, 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 encerrar su contenido (más relleno)

En aras de una mejor ilustración, he creado un diseño de muestra que demuestra este concepto. Para ver su efecto, agregué un borde de cada contenido textView.

En el contenido textView de "Emparejar padre", podemos ver su ancho de diseño extendido a lo largo de su longitud padre.

Pero podemos ver en el texto "Ajustar contenido" Ver contenido, su ancho de diseño envuelto en su contenido (Ajustar contenido).

Diseño de Android

Subarata Talukder
fuente
4

match_parent y fill_parent son la misma propiedad, utilizada para definir el ancho o la altura de una vista en pantalla completa horizontal o verticalmente.

Estas propiedades se usan en archivos xml de Android como este.

 android:layout_width="match_parent"
 android:layout_height="fill_parent"

o

 android:layout_width="fill_parent"
 android:layout_height="match_parent"

fill_parentse usaba en versiones anteriores, pero ahora ha quedado obsoleto y reemplazado por match_parent. Espero que te ayude.

Mansuu ....
fuente
3

fill_parent: la vista debe ser tan grande como su padre.

ahora este contenido fill_parent está en desuso y reemplazado por match_parent.

Nikita Prajapati
fuente
3

Para mí, llenar padre y emparejar padre realiza la misma función solo que:

llenar padre : se usó antes de API 8

match parent Esto se usó desde la función API 8+ de ambos rellena la vista principal a un lado del relleno

Xcode
fuente
2

FILL_PARENT pasó a llamarse MATCH_PARENT en el nivel de API 8 y superior, lo que significa que la vista quiere ser tan grande como su padre (menos relleno) - Google

Sarvesh Thiruppathi
fuente
2

FILL_PARENT está en desuso desde el nivel de API 8 y superior y se renombra para las versiones superiores como MATCH_PARENT

Ambos son iguales FILL_PARENTy MATCH_PARENT, FILL_PARENTse usó en la versión inferior a menos del nivel de API 8 y MATCH_PATENT se usa en el nivel de API superior a 8.

FILL_PARENT(renombrado MATCH_PARENTen API Nivel 8 y superior), lo que significa que la vista quiere ser tan grande como su padre (menos relleno)

fill_parent: La vista debe ser tan grande como su padre (menos el relleno). Esta constante está en desuso a partir del nivel de API 8 y se reemplaza por match_parent.

Para más detalles, visite esta página

Utkarsh Srivastava
fuente
0

1. match_parent

Cuando establece el ancho y la altura del diseño como match_parent, ocupará el área completa que tiene la vista principal, es decir, será tan grande como el principal.

Nota : Si a los padres se les aplica un relleno, ese espacio no se incluiría.

Cuando creamos un layout.xml de forma predeterminada, tenemos RelativeLayout como Vista principal predeterminada con android: layout_width = "match_parent" y android: layout_height = "match_parent", es decir, ocupa todo el ancho y alto de la pantalla del dispositivo móvil.

También tenga en cuenta que el relleno se aplica a todos los lados,

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

Ahora agreguemos una subvista LinearLayout y establezca su layout_width = "match_parent" y layout_height = "match_parent", la vista gráfica mostraría algo como esto,

match_parent_example

Código

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.code2care.android.togglebuttonexample.MainActivity" >

android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="11dp"
android:background="#FFFFEE"
android:orientation="vertical" >

2. fill_parent:

Esto es lo mismo que match_parent, fill_parent se depreció en el nivel 8 de la API. Por lo tanto, si usa el nivel 8 o superior de la API, debe evitar el uso de fill_parent

Sigamos los mismos pasos que hicimos para match_parent, solo use fill_parent en todas partes.

Vería que no hay diferencia de comportamiento tanto en fill_parent como en match parent.

Hossam Scott
fuente