Réponses:
L'un ou l'autre des attributs peut être appliqué à la taille horizontale ou verticale de View (contrôle visuel). Il est utilisé pour définir une taille de vue ou de disposition en fonction de son contenu ou de la taille de sa disposition parent plutôt que de spécifier explicitement une dimension.
fill_parent
(obsolète et renommé MATCH_PARENT
en API niveau 8 et supérieur)
Définir la disposition d'un widget sur fill_parent le forcera à s'étendre pour occuper autant d'espace que disponible dans l'élément de disposition dans lequel il a été placé. C'est à peu près l'équivalent de définir le style d'ancrage d'un contrôle de formulaire Windows sur Fill
.
La définition d'une disposition ou d'un contrôle de niveau supérieur sur fill_parent l'obligera à occuper tout l'écran.
wrap_content
La définition de la taille d'une vue sur wrap_content la forcera à s'étendre suffisamment loin pour contenir les valeurs (ou les contrôles enfants) qu'elle contient. Pour les contrôles - comme les zones de texte (TextView) ou les images (ImageView) - cela enveloppera le texte ou l'image affichée. Pour les éléments de mise en page, il redimensionnera la mise en page pour s'adapter aux contrôles / mises en page ajoutés en tant qu'enfants.
C'est à peu près l'équivalent de définir la Autosize
propriété True d' un contrôle de formulaire Windows .
Documentation en ligne
Il y a quelques détails dans la documentation du code Android ici .
fill_parent
(obsolète) =match_parent
La bordure de la vue enfant se développe pour correspondre à la bordure de la vue parent.
wrap_content
La bordure de la vue enfant s'enroule parfaitement autour de son propre contenu.
Voici quelques images pour rendre les choses plus claires. Le vert et le rouge sont TextViews
. Le blanc est LinearLayout
visible.
Chaque View
(a TextView
, an ImageView
, a Button
, etc.) doit définir le width
et le height
de la vue. Dans le fichier de mise en page XML, cela pourrait ressembler à ceci:
android:layout_width="wrap_content"
android:layout_height="match_parent"
En plus de définir la largeur et la hauteur sur match_parent
ou wrap_content
, vous pouvez également les définir sur une valeur absolue:
android:layout_width="100dp"
android:layout_height="200dp"
En général, ce n'est pas aussi bon, car il n'est pas aussi flexible pour des appareils de tailles différentes. Après avoir compris wrap_content
et match_parent
, la prochaine chose à apprendre est layout_weight
.
Disposition linéaire verticale
<?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>
Disposition linéaire horizontale
<?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>
L'explication de cette réponse suppose qu'il n'y a pas de marge ou de remplissage . Mais même s'il y en a, le concept de base est toujours le même. La bordure / l'espacement de la vue est juste ajusté par la valeur de la marge ou du remplissage.
fill_parent
rendra la largeur ou la hauteur de l'élément aussi grande que l'élément parent, en d'autres termes, le conteneur.
wrap_content
rendra la largeur ou la hauteur aussi grande que nécessaire pour contenir les éléments qui s'y trouvent.
fill_parent
:
Un composant est agencé pour que la disposition fill_parent
soit obligatoire à développer pour remplir les membres de l'unité d'agencement, autant que possible dans l'espace. Cela est cohérent avec la propriété dockstyle du contrôle Windows. Une disposition ou un contrôle supérieur fill_parent
le forcera à occuper tout l'écran.
wrap_content
Configurer une vue de la taille de wrap_content
sera forcé à afficher est développé pour afficher tout le contenu. Les contrôles TextView et ImageView , par exemple, sont définis pour wrap_content
afficher l'intégralité de son texte et de son image internes. Les éléments de mise en page changeront la taille en fonction du contenu. Configurez une vue de la taille de l'attribut Taille automatique à wrap_content
peu près équivalente pour définir un contrôle Windows pour True.
Pour plus de détails, veuillez consulter ce lien: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
fill_parent
été renommématch_parent
en API niveau 8 et supérieur.