Quelle est la différence entre le parent de correspondance et le parent de remplissage?
Je suis un peu confus au sujet de deux propriétés XML: match_parent
et fill_parent
. Il semble que les deux sont les mêmes. Quelle est la différence entre eux?
17 réponses
C'est la même chose (dans L'API Niveau 8+). Utilisez match_parent
.
FILL_PARENT (renommé MATCH_PARENT dans L'API de niveau 8 et supérieur), ce qui signifie que la vue veut être aussi grande que son parent (moins le remplissage)
...
fill_parent
: la vue devrait être aussi grande que son parent (moins le remplissage). Cette constante est obsolète à partir du niveau 8 de L'API et est remplacée parmatch_parent
.
Http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
Google a changé le nom pour éviter toute confusion.
Le problème avec l'ancien nom fill parent
était qu'il implique qu'il affecte les dimensions du parent, tandis que match parent
décrit mieux le comportement résultant-correspond à la dimension avec le parent.
Les deux constantes résolvent à -1
à la fin, et entraînent ainsi le comportement identique dans l'application. Ironiquement, ce changement de nom fait pour clarifier les choses semble avoir ajouté de la confusion plutôt que de l'éliminer.
Fonctionnellement pas de différence, Google vient de changer le nom de fill_parent à match_parent, à partir du niveau API 8 (Android 2.2). FILL_PARENT est toujours disponible pour des raisons de compatibilité.
LayoutParams.FILL_PARENT
et LayoutParams.MATCH_PARENT
les deux ont de la valeur -1. Je ne sais pas ce qui a tenté google de changer de parent de remplissage pour correspondre au Parent:)
Depuis la plupart des phones are >= Android 2.2
.. vous devez utiliser Match Parent pour une compatibilité future... Je ne sais pas quand ils vont cesser la constante parent de remplissage plus!
Pour des raisons de compatibilité, il est préférable de s'en tenir à fill_parent, c'est-à-dire lors de la prise en charge des périphériques API 8 ci-dessous. Mais si votre application cible API 8 et plus, vous devez utiliser match_parent à la place.
fill_parent
(renommé MATCH_PARENT
au niveau de L'API8 et plus haut), ce qui signifie que la vue veut être aussi grande que son parent (moins le remplissage)
fill_parent
: la vue devrait être aussi grande que son parent (moins le remplissage). Cette constante est obsolète à partir du niveau API 8 et est remplacé par match_parent
Pour Android API 1.6 pour 2.1 match_parent
vous gratifiera d'une erreur, afin de l'utiliser fill_parent
dans ces cas. Pour soutenir la rétrocompatibilité, il est préférable d'utiliser fill_parent
- les deux sont des constantes finales statiques qui représentent la valeur -1
- {[7] } est obsolète au niveau de L'API 8
Donc MATCH_PARENT et FILL_PARENT sont les mêmes?
Oui, MATCH_PARENT
et FILL_PARENT
ne sont que des noms de constantes différents pour la même valeur entière (-1 si vous êtes curieux) utilisée pour spécifier le mode de mise en page d'une vue dans son parent.
Alors pourquoi MATCH_PARENT a-t-il été ajouté?
Je me souviens de ce Roman Guy (développeur Android chez Google) a dit, qu'ils ont changé le nom parce que "fill_parent
" était source de confusion pour les développeurs. En fait, "fill_parent
" ne remplit pas l'espace restant (pour cela vous utilisez l'attribut weight) mais il prend autant d'espace que son parent de mise en page. C'est pourquoi le nouveau nom est "match_parent
"
MATCH_PARENT
et FILL_PARENT
sont les mêmes?
Oui, MATCH_PARENT
et FILL_PARENT
ne sont que des noms de constantes différents pour la même valeur entière (-1 si vous êtes curieux) utilisée pour spécifier le mode de mise en page d'une vue dans son parent.
Alors pourquoi MATCH_PARENT
a-t-il été ajouté?
L'équipe Android a constaté que les développeurs interprétaient mal {[2] } pour signifier qu'un View
remplirait l'espace restant dans son parent. En fait, en spécifiant FILL_PARENT
, le View
demande d'être aussi fort que son parent.
OK, je comprends comment fonctionne FILL_PARENT/MATCH_PARENT
. Qu'importe si j'utilise l'un ou l'autre?
FILL_PARENT
est obsolète. Être déprécié n'en fait pas le diable, mais finalement il disparaîtra. Votre application est plus pérenne en utilisant MATCH_PARENT
. Pourquoi utiliser l'option obsolète lorsque l'option se comporte exactement de la même chose?
De plus, FILL_PARENT
est en fait trompeur. J'ai personnellement vu des gens confus parce que cela ne fonctionne pas comme ils le pensaient serait. En fait, j'ai vu une seule balise utilisant à la fois FILL_PARENT
et MATCH_PARENT
, parce que le développeur pensait (naturellement) qu'il s'agissait de deux modes de mise en page différents.
COMMENT VOUS POUVEZ VOUS FAIRE TRÉBUCHER EN ESSAYANT DE FILL_PARENT
?
Voici un exemple rapide de la façon dont MATCH_PARENT/FILL_PARENT
la confusion peut amener les gens à appliquer à plusieurs reprises leurs têtes à leurs bureaux. Tout d'abord, prenez une mise en page très simple contenant quelques instances 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>
FILL_PARENT
est obsolète dans L'API de niveau 8 et MATCH_PARENT
utilise L'API higherlevel
Juste pour lui donner un nom plus proche de son action. "fill_parent"
ne remplit pas l'espace restant comme le nom l'impliquerait (pour cela, vous utilisez l'attribut weight). Au lieu de cela, il prend autant de place que son parent de mise en page. C'est pourquoi le nouveau nom est "match_parent"
Les deux ont des fonctionnalités similaires seule différence est que fill_parent est utilisé jusqu'au niveau API 8 et match_parent est utilisé après le niveau API 8 ou supérieur.
Lorsque vous définissez layout width
et height
comme match_parent
dans la propriété XML
, elle occupera la zone complète de la vue parent, c'est-à-dire qu'elle sera aussi grande que le parent.
<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>
Le parent du lièvre est Rouge et l'enfant est vert. Enfant occupent toute la zone. Parce que c'est width
et height
sont match_parent
.
Note: Si parent est appliqué un remplissage alors cet espace ne serait pas inclus.
<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>
Donc TextView hight = 300dp(parent d'altitude) - (20(paddingTop)+10(paddingBottom)) = (300 - 30) dp = 270 dp
Fill_parent Vs match_parent
fill_parent
est le nom précédent de match_parent
Pour les API de niveau 8 et supérieur fill_parent
renommé match_parent
et fill_parent
est obsolète maintenant.
, Donc fill_parent
et match_parent
sont les mêmes.
Documentation API pour fill_parent
La vue doit être aussi grande que son parent (moins le remplissage). Cette constante est obsolète à partir du niveau 8 de L'API et est remplacée par {@code match_parent}.
match_parent
et fill_parent
sont la même propriété, utilisée pour définir la largeur ou la hauteur d'une vue en plein écran horizontalement ou verticalement.
Ces propriétés sont utilisées dans les fichiers xml android comme ceci.
android:layout_width="match_parent"
android:layout_height="fill_parent"
Ou
android:layout_width="fill_parent"
android:layout_height="match_parent"
fill_parent
a été utilisé dans les versions précédentes, mais maintenant, il a été abandonné et remplacé par match_parent
.
J'espère que ça va vous aider.
Fill_parent: la vue doit être aussi grande que son parent.
Maintenant ce contenu fill_parent est obsolète et remplacé par match_parent.
Me remplir parent et match parent effectue la même fonction que:
Remplir parent: A été utilisé avant API 8
Correspondance parent Cela a été utilisé à partir de L'API 8+ fonction des deux Remplit la vue parent de côté le remplissage
Match_parent, ce qui signifie que la vue veut être aussi grande que son parent (moins le remplissage).
Wrap_content, ce qui signifie que la vue veut être juste assez grande pour entourer son contenu (plus le remplissage)
Par souci de meilleure illustration, j'ai créé un exemple de mise en page qui démontre ce concept. Pour voir son effet, j'ai ajouté une bordure de chaque contenu textView.
Dans le contenu textView" Match parent", nous pouvons voir sa largeur de mise en page répartie sur son parent entier longueur.
Mais nous pouvons voir dans" Wrap Content " textView content, sa largeur de mise en page enveloppée de sa longueur de contenu(Wrap Content).
FILL_PARENT a été renommé MATCH_PARENT au niveau de L'API 8 et supérieur, ce qui signifie que la vue veut être aussi grande que son parent (moins le remplissage) - Google
Fill_parent (renommé MATCH_PARENT au niveau de L'API 8 et supérieur), ce qui signifie que la vue veut être aussi grande que son parent (moins le remplissage)
Fill_parent: la vue doit être aussi grande que son parent (moins le remplissage). Cette constante est obsolète à partir du niveau 8 de L'API et est remplacée par match_parent
Pour Android API 1.6 à 2.1 match_parent vous lancera une erreur, alors utilisez fill_parent dans ces cas. Pour soutenir la rétrocompatibilité, il est préférable d'utiliser fill_parent
Les deux sont des constantes finales statiques qui représentent la valeur -1
FILL_PARENT est obsolète au niveau de L'API 8
DONC MATCH_PARENT ET FILL_PARENT SONT LES MÊMES?
Oui, MATCH_PARENT et FILL_PARENT ne sont que des noms de constantes différents pour la même valeur entière (-1 si vous êtes curieux) utilisée pour spécifier le mode de mise en page d'une vue dans son parent.
ALORS, POURQUOI MATCH_PARENT A-T-IL ÉTÉ AJOUTÉ?
En tant que Roman Guy (développeur Android chez Google) dit, qu'ils ont changé le nom parce que "fill_parent" était source de confusion pour les développeurs. En fait, "fill_parent" ne remplit pas l'espace restant (pour cela vous utilisez l'attribut weight) mais il prend comme