Utilisation des widgets de base

Utilisation des widgets de base

Labels

Le label (TextView pour Android) est le widget le plus simple. Comme dans la plupart des kits de développement, les labels sont des chaînes de textes non modifiables par les utilisateurs. Ils servent généralement à identifier les widgets qui leur sont adjacents (« Nom : « , par exemple, placé à côté d’un champ de saisie). En Java, un label est une instance de la classe TextView. Cependant, ils seront le plus souvent créés dans les fichiers layout XML en ajoutant un élément TextView doté d’une propriété android:text pour définir le texte qui lui est associé. Si vous devez échanger des labels en fonction d’un certain critère – l’internationalisation, par exemple –, vous pouvez utiliser à la place une référence de ressource dans le code XML, comme nous l’expliquerons au Chapitre 9. Un élément TextView possède de nombreux autres attributs, notamment : ● android:typeface pour définir le type de la police du label (monospace, par exemple) ; ● android:textStyle pour indiquer si le texte doit être en gras (bold), en italique (italic) ou les deux (bold_italic) ; ● android:textColor pour définir la couleur du texte du label, au format RGB hexadécimal (#FF0000 pour un texte rouge, par exemple). Voici le contenu du fichier de positionnement du projet Basic/Label : Comme le montre la Figure 6.1, ce fichier seul, avec le squelette Java fourni par la chaîne de production d’Android (android create project), produira l’application voulue. Boutons Nous avons déjà utilisé le widget Button au Chapitre 4. Button étant une sous-classe de TextView, tout ce qui a été dit dans la section précédente concernant le formatage du texte s’applique également au texte d’un bouton. Figure 6.1 L’application LabelDemo.  Images Android dispose de deux widgets permettant d’intégrer des images dans les activités : ImageView et ImageButton. Comme leur nom l’indique, il s’agit, respectivement, des équivalents images de TextView et Button. Chacun d’eux possède un attribut android:src permettant de préciser l’image utilisée. Cet attribut désigne généralement une ressource graphique (voir le chapitre consacré aux ressources). Vous pouvez également configurer le contenu de l’image en utilisant une URI d’un fournisseur de contenu, via un appel setImageURI(). ImageButton, une sous-classe d’ImageView, lui ajoute les comportements d’un Button standard pour répondre aux clics et autres actions. 

Champs de saisie

Outre les boutons et les labels, les champs de saisie forment le troisième pilier de la plupart des outils de développement graphiques. Avec Android, ils sont représentés par le widget EditText, qui est une sous-classe de TextView, déjà vue pour les labels. En plus des propriétés standard de TextView (android:textStyle, par exemple), EditText possède de nombreuses autres propriétés dédiées à la construction des champs. Parmi elles, citons : ● android:autoText pour indiquer si le champ doit fournir une correction automatique de l’orthographe. ● android:capitalize pour demander que le champ mette automatiquement en majuscule la première lettre de son contenu. ● android:digits pour indiquer que le champ n’acceptera que certains chiffres. ● android:singleLine pour indiquer si la saisie ne s’effectue que sur une seule ou plusieurs lignes (autrement dit, vous place-t-il sur le widget suivant ou ajoutet-il une nouvelle ligne ?). Outre ces propriétés, vous pouvez configurer les champs pour qu’ils utilisent des méthodes de saisie spécialisées, avec les attributs android:numeric pour imposer une saisie uniquement numérique, android:password pour masquer la saisie d’un mot de passe et android:phoneNumber pour la saisie des numéros de téléphone. Pour créer une méthode de saisie particulière (afin, par exemple, de saisir des codes postaux ou des numéros de sécurité sociale), il faut implémenter l’interface InputMethod puis configurer le champ pour qu’il utilise cette méthode, à l’aide de l’attribut android:inputMethod. Voici, par exemple, la description d’un EditText tiré du projet Basic/Field : Vous remarquerez que la valeur d’android:singleLine est false, ce qui signifie que les utilisateurs pourront saisir plusieurs lignes de texte dans ce champ. Le fichier FieldDemo.java de ce projet remplit le champ de saisie avec un peu de prose : package com.commonsware.android.basic; import android.app.Activity; import android.os.Bundle;   import android.widget.EditText; public class FieldDemo extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); EditText fld=(EditText)findViewById(R.id.field); fld.setText(« Publie sous les termes de la licence Apache 2.0  » + « (la \ »Licence\ ») ; pour utiliser ce fichier  » + « vous devez respecter la Licence dont vous pouvez  » + « obtenir une copie a l’URL  » + « http://www.apache.org/licenses/LICENSE-2.0 »); } }  

Cases à cocher

La case à cocher classique peut être dans deux états : cochée ou décochée. Un clic sur la case inverse son état pour indiquer un choix (« Livrer ma commande en urgence », par exemple). Le widget CheckBox d’Android permet d’obtenir ce comportement. Comme il dérive de la classe TextView, les propriétés de celles-ci comme android:textColor permettent également de formater ce widget. Dans votre code Java, vous pouvez utiliser les méthodes suivantes : ● isChecked() pour savoir si la case est cochée ; ● setChecked() pour forcer la case dans l’état coché ou décoché ; ● toggle() pour inverser l’état de la case, comme si l’utilisateur avait cliqué dessus. Vous pouvez également enregistrer un objet écouteur (il s’agira, ici, d’une instance d’OnCheckedChangeListener) pour être prévenu des changements d’état de la case. Voici la déclaration XML d’une case à cocher, tirée du projet Basic/CheckBox : Le fichier CheckBoxDemo.java correspondant récupère cette case à cocher et configure son comportement : public class CheckBoxDemo extends Activity implements CompoundButton.OnCheckedChangeListener { CheckBox cb; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); cb=(CheckBox)findViewById(R.id.check); cb.setOnCheckedChangeListener(this); } public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { cb.setText(« Cette case est cochee »); } else { cb.setText(« Cette case est decochee »); } } } 

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *