web-dev-qa-db-fra.com

Quelle est la différence entre match_parent et fill_parent?

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. Y a-t-il une différence entre eux?

1318
vnshetty

Ils sont la même chose (dans API niveau 8+). Utilisez match_parent.

FILL_PARENT (renommé MATCH_PARENT dans les 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 doit être aussi grande que son parent (moins le remplissage). Cette constante est obsolète à partir de l'API niveau 8 et est remplacée par match_parent.

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

1191
Matt Ball

Google a changé le nom pour éviter toute confusion.

Le problème avec l'ancien nom fill parent était qu'il impliquait des conséquences sur les dimensions du parent, alors que match parent décrit mieux le comportement résultant - correspond à la dimension avec le parent.

Les deux constantes se résolvent en -1 à la fin, ce qui entraîne un comportement identique dans l'application. Ironiquement, ce changement de nom apporté pour clarifier les choses semble avoir semé la confusion au lieu de l'éliminer.

236
Tapirboy

Sur le plan fonctionnel, Google a simplement changé le nom de fill_parent en match_parent, à partir du niveau 8 de l'API (Android 2.2). FILL_PARENT est toujours disponible pour des raisons de compatibilité.

LayoutParams.FILL_PARENT et LayoutParams.MATCH_PARENT ont tous les deux la valeur -1. Pas sûr de ce que google tenté de changer de remplir le parent pour correspondre à parent :)

Étant donné que la plupart des phones are >= Android 2.2 .. vous devez utiliser Match Parent pour une compatibilité future ... ne savez pas quand ils abandonneront l'ancienne constante Fill Parent!

25
Umair

Par souci de compatibilité, il est préférable de vous en tenir à fill_parent, c'est-à-dire lorsque vous prenez en charge des périphériques inférieurs à API 8 . Mais si votre application cible l'API 8 et les versions ultérieures, utilisez plutôt match_parent.

12
Olumide Oyetoke

match_parent est utilisé à la place de fill_parent et lui permet d'aller aussi loin que le parent Utilisez simplement match_parent et oubliez fill_parent. J'ai complètement abandonné fill_parent et tout est parfait comme d'habitude. 

Vérifiez ici pour plus. 

7
Koech

FILL_PARENT est obsolète dans les API de niveau 8 et MATCH_PARENTuse de niveau supérieur.

7
Avanish Kumar

Les deux ont des fonctionnalités similaires, mais la différence est que fill_parent est utilisé jusqu'au niveau 8 de l'API et que match_parent est utilisé après le niveau 8 ou supérieur de l'API.

5
Praveen Gaur

Juste pour lui donner un nom plus proche de son action réelle . "fill_parent" ne remplit pas l'espace restant comme son nom l'indique (pour cela, vous utilisez l'attribut weight). Au lieu de cela, il prend autant de place que son parent de disposition. C'est pourquoi le nouveau nom est "match_parent"

5
Xar E Ahmer

Lorsque vous définissez la disposition width et height en tant que match_parent dans la propriété XML, elle occupera toute la zone occupée par 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 de lièvre est rouge et l'enfant est vert. Enfant occuper toute la zone. Parce que c'est width et height sont match_parent.

 enter image description here

Remarque: Si le parent est appliqué à un remplissage, cet espace ne sera 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>

 enter image description here

Donc TextView hight = 300dp (hauteur parent) - (20 (paddingTop) +10 (paddingBottom)) = (300 - 30) dp = 270 dp

fill_parent vs match_parent

fill_parent est l'ancien nom de match_parent

Pour l'API de niveau 8 et supérieur, fill_parent renommé en match_parent et fill_parent est obsolète maintenant.

Donc, fill_parent et match_parent sont identiques. 

Documentation API pour fill_parent

La vue doit être aussi grande que son parent (moins le rembourrage). Cette constante est obsolète à partir de l'API niveau 8 et est remplacée par {@code match_parent}.

4
user4696837

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 xml 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 était utilisé dans les versions précédentes, mais il est maintenant obsolète et remplacé par match_parent. J'espère que cela vous aidera.

4
Mansuu....

Pour moi remplir parent et correspondre parent remplit la même fonction uniquement que:

fill parent : A été utilisé avant API 8

match parent Ceci a été utilisé à partir de l'API 8 + Fonction des deux Remplit la vue parent en dehors du remplissage

3
Xcode

fill_parent: La vue doit être aussi grande que son parent.

désormais, ce contenu fill_parent est obsolète et remplacé par match_parent.

3

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 contenir son contenu (plus un remplissage)

Par souci d’illustration, j’ai créé un exemple de présentation illustrant ce concept. Pour voir son effet, j'ai ajouté une bordure de chaque contenu textView.

Dans le contenu textView "Match parent", nous pouvons voir que sa largeur de mise en page est répartie sur toute la longueur de son parent.

Mais nous pouvons voir dans "Wrap Content" le contenu textView, sa largeur de mise en page est encapsulée dans sa longueur (Wrap Content).

 Android Layout

3
Subarata Talukder

FILL_PARENT est obsolète à partir de l'API de niveau 8 et supérieur et renommé MATCH_PARENT pour les versions supérieures.

Les deux sont identiques FILL_PARENT et MATCH_PARENT, FILL_PARENT a été utilisé dans la version inférieure inférieure au niveau d'API 8 et MATCH_PATENT sont utilisés dans le niveau supérieur d'API supérieur à 8. 

FILL_PARENT (renommé MATCH_PARENT dans les 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 doit être aussi grande que son parent (moins le remplissage). Cette constante est obsolète à partir de l'API niveau 8 et est remplacée par match_parent.

Pour plus de détails s'il vous plaît visitez this page

2
Utkarsh Srivastava

FILL_PARENT a été renommé MATCH_PARENT dans les API de niveau 8 et supérieur, ce qui signifie que la vue veut être aussi grande que son parent (moins le remplissage) - Google

2

1. match_parent

Lorsque vous définissez la largeur et la hauteur de la présentation comme match_parent, elle occupe toute la surface de la vue parente, c'est-à-dire qu'elle est aussi grande que la vue parent. 

Remarque : Si un parent est appliqué à un parent, cet espace ne sera pas inclus. 

Lorsque nous créons un fichier layout.xml par défaut, nous avons RelativeLayout comme parent par défaut. View avec Android: layout_width = "match_parent" et Android: layout_height = "match_parent", c’est-à-dire qu’il occupe toute la largeur et la hauteur de l’écran de votre mobile. 

Notez également que le rembourrage est appliqué à tous les côtés, 

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

Ajoutons maintenant une vue secondaire LinearLayout et définissons ses propriétés layout_width = "match_parent" et layout_height = "match_parent", la vue graphique affichera quelque chose comme ceci, 

match_parent_example 

Code

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:

Identique à match_parent, fill_parent a été amorti dans l'API de niveau 8. Si vous utilisez l'API de niveau 8 ou supérieur, vous devez éviter d'utiliser fill_parent. 

Suivons les mêmes étapes que pour match_parent, mais utilisons plutôt fill_parent partout. 

Vous constaterez qu'il n'y a pas de différence de comportement entre fill_parent et match parent. 

0
hossam scott