Comme mentionné précédemment, généralement, l'interface utilisateur est déclarée dans des fichiers XML, puis modifiée au cours de l'exécution via le code Java. Il est possible de créer complètement l'interface utilisateur en code Java, mais pour une mise en page complexe, elle ne sera généralement pas considérée comme la meilleure pratique.
L'exemple GridView du chapitre précédent a été créé dans le code. Mais contrairement à la recette GridView, dans cette recette, nous allons ajouter une vue à la disposition existante définie dans
activity_main.xml.
Se préparer
Créez un nouveau projet dans Android Studio et appelez-le RuntimeWidget. Sélectionnez l'option Empty Activity lorsque vous êtes invité à entrer le type d'activité.

Comment faire...
Nous allons commencer par ajouter un attribut ID à la mise en page existante afin que nous puissions accéder à la mise en page dans le code. Une fois que nous avons une référence à la mise en page dans le code, nous pouvons ajouter de nouvelles vues à la mise en page existante. Voici les étapes:
1. Ouvrez le fichier res / layout / activity_main.xml et ajoutez un attribut ID au fichier principal.
RelativeLayout, comme suit:
android: id = "@ + id / layout"
2. Supprimez complètement l'élément <TextView> par défaut.
3. Ouvrez le fichier MainActivity.java pour pouvoir ajouter du code à la méthode onCreate (). Ajoutez le code suivant (après setContentView ()) pour obtenir une référence
à la RelativeLayout:
RelativeLayout layout = (RelativeLayout) findViewById (R.id.layout);
4. Créez un DatePicker et ajoutez-le à la mise en page avec le code suivant:
DatePicker DatePicker = new DatePicker (this); layout.addView (datePicker);
5. Exécutez le programme sur un périphérique ou un émulateur.

Comment ça marche...
C'est un code très simple. Tout d'abord, nous obtenons une référence à la structure parent en utilisant findViewById. Nous avons ajouté l'ID au RelativeLayout existant (à l'étape 1) pour le rendre plus facile à référencer. Nous créons un DatePicker dans le code et l'ajoutons à la mise en page avec la méthode addView ().

Il y a plus...
Et si nous voulions créer toute la mise en page à partir du code? Bien que cela ne soit pas considéré comme la meilleure pratique, il est parfois plus facile (et moins complexe) de créer une mise en page à partir du code. Voyons à quoi ressemblera cet exemple si nous n'avons pas utilisé la disposition de activity_main.xml. Voici comment onCreate () ressemblerait:
@Passer outre
void protégé onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState);
RelativeLayout layout = nouveau RelativeLayout (this);
DatePicker DatePicker = new DatePicker (this);
layout.addView (datePicker);
setContentView (disposition);
}
Dans cet exemple, ce n'est vraiment pas si différent. Si vous créez une vue dans le code et souhaitez la référencer plus tard, vous devez conserver une référence à l'objet ou attribuer un ID à l'affichage pour utiliser findViewByID (). Pour donner un ID à une vue, utilisez la méthode setID () en passant dans View. generateViewId () (pour générer un identifiant unique) ou définissez l'identifiant en utilisant <resources> dans xml.