Il suffit d'utiliser RelativeLayout
ou FrameLayout
. La dernière vue enfant se superpose à toutes les autres.
Android prend en charge un modèle que le SDK de Cocoa Touch ne prend pas en charge : La gestion de la mise en page.
Mise en page pour l'iPhone permet de positionner tout en absolu (à l'exception de certains facteurs d'extension). La mise en page dans Android signifie que les enfants seront placés les uns par rapport aux autres.
Exemple (le deuxième EditText couvrira complètement le premier) :
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/root_view">
<EditText
android:layout_width="fill_parent"
android:id="@+id/editText1"
android:layout_height="fill_parent">
</EditText>
<EditText
android:layout_width="fill_parent"
android:id="@+id/editText2"
android:layout_height="fill_parent">
<requestFocus></requestFocus>
</EditText>
</FrameLayout>
FrameLayout
est une sorte de pile de vues. Fait pour les cas particuliers.
RelativeLayout
est assez puissant. Vous pouvez définir des règles comme La vue A doit aligner la mise en page parent en bas , La vue B doit aligner A de bas en haut etc.
Mise à jour en fonction du commentaire
Habituellement, vous définissez le contenu avec setContentView(R.layout.your_layout)
sur onCreate
(cela gonflera la mise en page pour vous). Vous pouvez le faire manuellement et appeler setContentView(inflatedView)
il n'y a pas de différence.
La vue elle-même peut être une vue unique (telle que TextView
) ou une hiérarchie complexe de mises en page (mises en page imbriquées, puisque toutes les mises en page sont elles-mêmes des vues).
Après avoir appelé setContentView
votre activité sait à quoi ressemble son contenu et vous pouvez utiliser (FrameLayout) findViewById(R.id.root_view)
pour récupérer n'importe quelle vue dans cette hiérarchie (modèle général). (ClassOfTheViewWithThisId) findViewById(R.id.declared_id_of_view)
).