wrap_content studio sirve que para match_parent layout_width fill_parent entre diferencia android android-layout

android - studio - wrap_content



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

Estoy un poco confundido acerca de dos propiedades XML: match_parent y fill_parent . Parece que ambos son iguales. ¿Hay alguna diferencia entre ellos?


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


Cuando establece el width y la height diseño como match_parent en la propiedad XML , 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 liebre es rojo y el niño es verde. El niño ocupa toda el área. Porque su width y height son match_parent .

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

<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>

Por lo tanto, TextView hight = 300dp (altura padre) - (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_parent renombró como match_parent y fill_parent está en desuso ahora.

Así que fill_parent y match_parent son iguales.

Documentación 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}.


FILL_PARENT fue renombrado como MATCH_PARENT en el Nivel API 8 y superior, lo que significa que la vista desea ser tan grande como su padre (menos el relleno) - Google


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

LayoutParams.FILL_PARENT y LayoutParams.MATCH_PARENT tienen valor -1. No estoy seguro de lo que tentó a google a cambiar de Completar padre a coincidir padre :)

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


Google cambió el nombre para evitar confusiones.

El problema con el antiguo nombre de fill parent fue que implica que afecta las dimensiones del padre primario, mientras match parent describe mejor el comportamiento resultante: relacionar la dimensión con el padre.

Ambas constantes se resuelven en -1 al final 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 eliminarla.


Para mí, completar padre y coincidir padre realiza la misma función solo que:

completar padre : se usó antes de API 8

coincidir con el padre Esto se usó desde la API 8+ Función de ambos Llena la vista principal a un lado del relleno


Por motivos de compatibilidad, es mejor atenerse a fill_parent, es decir, cuando se admiten dispositivos por debajo de API 8. Pero si tu aplicación apunta a la API 8 o superior, deberías usar match_parent en su lugar.


Son lo mismo (en el nivel API 8+). Utilice match_parent .

FILL_PARENT (renombrado como MATCH_PARENT en el nivel de API 8 y superior), lo que significa que la vista desea ser tan grande como su elemento primario (menos el relleno)

...

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 match_parent .

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


fill_parent (renombrado como MATCH_PARENT en el nivel de API 8 y superior), lo que significa que la vista desea ser tan grande como su padre (menos el relleno)

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 match_parent

Para Android API 1.6 a 2.1 match_parent le arrojará un error, así que use fill_parent en estos casos. Para admitir la compatibilidad con versiones anteriores, es mejor usar fill_parent

Ambas son constantes finales estáticas que representan el valor -1

FILL_PARENT está en desuso en el nivel 8 de API

¿Entonces MATCH_PARENT Y FILL_PARENT SON LOS MISMOS?

Sí, MATCH_PARENT y FILL_PARENT son solo nombres de constantes diferentes para el mismo valor entero (-1 si tienes curiosidad) que se usan para especificar el modo de diseño de una Vista dentro de su padre.

¿POR QUÉ SE AGREGÓ MATCH_PARENT?

Como dijo Roman Guy (Android Developer en Google), han cambiado el nombre porque "fill_parent" era confuso para los desarrolladores. Como cuestión de hecho, "fill_parent" no llena el espacio restante (para eso usa el atributo de peso) pero toma como


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

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


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 incluir su contenido (más el relleno)

Para 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 texto "Coincidir con el elemento primario" del texto, podemos ver que el ancho del diseño se extiende fuera de su longitud principal principal.

Pero podemos ver en el contenido de TextView "Wrap Content", el ancho del diseño incluido en su contenido (Wrap Content).


FILL_PARENT está en desuso en la API de nivel 8 y MATCH_PARENT usa la API de nivel superior


fill_parent (renombrado como MATCH_PARENT en el nivel de API 8 y superior), lo que significa que la vista desea ser tan grande como su padre (menos el relleno)

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 match_parent

Para Android API 1.6 a 2.1 match_parent le arrojará un error, así que use fill_parent en estos casos. Para admitir la compatibilidad con versiones anteriores, es mejor usar fill_parent

  • Ambas son constantes finales estáticas que representan el valor -1
  • FILL_PARENT está en desuso en el nivel 8 de API

¿Entonces MATCH_PARENT y FILL_PARENT son iguales?

Sí, MATCH_PARENT y FILL_PARENT son solo nombres de constantes diferentes para el mismo valor entero (-1 si tienes curiosidad) que se usan para especificar el modo de diseño de una Vista dentro de su padre.

Entonces, ¿por qué se agregó MATCH_PARENT?

Recuerdo que Roman Guy (Android Developer en Google) dijo que habían cambiado el nombre porque " fill_parent " era confuso para los desarrolladores. Como cuestión de hecho, " fill_parent " no llena el espacio restante (para eso utiliza el atributo de peso) pero ocupa tanto espacio como su diseño principal. Es por eso que el nuevo nombre es " match_parent "


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

Estas propiedades se utilizan 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_parent se usó en versiones anteriores, pero ahora ha sido desaprobado y reemplazado por match_parent . Espero que te ayude.


1. match_parent

Cuando establezca 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 la principal.

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

Cuando creamos un layout.xml de forma predeterminada, tenemos RelativeLayout como Vista primaria predeterminada con android: layout_width = "match_parent" y android: layout_height = "match_parent", es decir, ocupa todo el ancho y la altura de la pantalla 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 vamos a agregar una sub-vista LinearLayout y establece 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 está utilizando el nivel 8 o superior de la API, debe evitar usar fill_parent

Sigamos los mismos pasos que hicimos para match_parent, en su lugar, usamos fill_parent en todas partes.

Vería que no hay diferencia en el comportamiento de fill_parent y match parent.


MATCH_PARENT y FILL_PARENT son lo mismo?

Sí, MATCH_PARENT y FILL_PARENT son solo nombres de constantes diferentes para el mismo valor entero (-1 si tienes curiosidad) que se usan para especificar el modo de diseño de una Vista dentro de su padre.

Entonces, ¿por qué se agregó MATCH_PARENT ?

El equipo de Android descubrió que los desarrolladores estaban malinterpretando FILL_PARENT para indicar que una View llenaría el espacio restante en su padre. De hecho, al especificar FILL_PARENT , la View solicita ser tan grande como su padre.

Bien, entiendo cómo funciona FILL_PARENT/MATCH_PARENT . ¿Qué importa si uso uno u otro?

FILL_PARENT está en desuso. Estar en desuso no lo convierte en el diablo, pero eventualmente desaparecerá. Su aplicación es más MATCH_PARENT futuro utilizando MATCH_PARENT . ¿Por qué usar la opción en desuso cuando la opción actual se comporta exactamente igual?

Además, FILL_PARENT es realmente engañoso. Personalmente he visto a la gente confundida porque no funciona de la forma en que pensaron que lo haría. De hecho, he visto una sola etiqueta que usa tanto FILL_PARENT como MATCH_PARENT , porque el desarrollador pensó (comprensiblemente) que eran dos modos de diseño diferentes.

¿CÓMO SE PUEDE FILL_PARENT UN FILL_PARENT EN FILL_PARENT ?

Este es un ejemplo rápido de cómo la confusión de MATCH_PARENT/FILL_PARENT puede llevar a que las personas apliquen repetidamente sus cabezas en sus escritorios. Primero, tome un diseño realmente simple que contenga algunas instancias de View .

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="100dp" android:background="#FFFF00" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:background="@android:color/black" android:text="@string/hello_world" android:padding="50dp" /> <View android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF0000" /> </LinearLayout>


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