Des widgets
Voir liste non exhaustive des attributs des widgets descendants de View
Méthodes intéressantes sur les View
La méthode View.getId() permet de récupérer l'identifiant de l'objet (R.id.button1 par exemple que vous auriez déclaré dans le fichier main.xml).
...
Le label ou TextView
Le tout premier est le plus simple est le label (TextView).
Il servira généralement à afficher du texte devant d'autres widgets (par exemple devant un champ de saisie comme par exemple Tel:).
Les attributs dans le layout xml
Les attributs les plus courants sont :
- android:layout_width et android:layout_height pour indiquer la place qu'occupera le label (voir chapitre Positionnement et occupation des surfaces des widgets)
- android:typeface Pour indiquer le type de la police
qui sera utilisé pour afficher le texte du label
- android:textStyle Pour indiquer si le texte doit être en gras
(bold), en italique (italic) ou les deux (bold_italic) ;
- android:textColor Pour indiquer la couleur du texte du label (format RGB hexadécimal
#RRVVBB).
- android:text Pour indiquer le texte du label
Vous trouverez
ici une liste des attibuts pour le textView:
http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
Les méthodes pour le code JAVA
- Les méthodes getText() et setText() nous permettrons de lire ou de positionner un texte.
(Exemple code HelloWorld).
Lien hyperTexte
Il s'agit d'un texte comprenant une adresse web, mail ou n° de téléphone. En cliquant dessus, une activité pouvant traiter ce lien est automatiquement lancée.
A coder, c'est hyper simple, car il s'agit en fait d'un simple TextView que l'on pose ! Vous saisissez ensuite votre texte normalement, par exemple : visitez le site supertos.free.fr
L'objet à l'exécution va trouver seul la partie de texte correspondant à une adresse et le surligner pour permettre à l'utilisateur de cliquer dessus, ce qui donnera quelque chose comme: visitez le site supertos.free.fr
Vous n'avez même pas à gérer le lancement de l'activité correspondante, tout sera fait automatiquement ! Enfin, il faudra quand gérer le cycle de vie de votre activité pour sauver éventuellement les informations saisies.
Dans les propriétés de l'objet, il suffit de positionner l'attribut android:autoLink à une valeur (par défaut, il est à none pour ne rien faire). Cette valeur pourra être positionnée à :
- none pour rien faire.
- web pour une adresse web.
- email pour adresse email.
- phone pour un numéro de téléphone.
- map pour une map.
- all pour tous types d'adresse.
Exemple : android:autoLink="web". Vous pouvez utiliser le | pour cumuler le type d'adresse à traiter: web|email|phone|map
Le bouton ou Button
Il s'agit d'une sous-classe de TextView. Il reprendra donc les mêmes attributs que ci-dessus.
Par contre, cela se complique au niveau du code JAVA.
Il faut en effet que celui-ci détecte que l'utilisateur a appuyé sur le ou un des boutons présents à l'écran, et surtout reconnaître le bouton pressé. Sinon, les boutons ne seraient pas bien intéressant !
Pour cela, nous devrons passer par un listener, qui va écouter ce qui se passe sur les boutons et déclencher du code lorsque l'un deux est pressé. C'est par ici ! Pour changer l'aspect de votre bouton, c'est par là !
Champ de saisie ou EditText
Il s'agit là aussi d'une sous-classe de TextView.
android:hint pour faire apparaître un texte d'exemple dans la champ de saisie de l'objet ("Tapez votre texte..." par exemple) ou pour expliquer à l'utilisateur ce que l'on attend comme saisie dans ce champ.
android:phoneNumber="true" pour indiquer que le champ est dans un format correspondant à un n° téléphone. L'utilisateur ne pourra donc pas saisir autre chose.
android:password="true" pour indiquer que l'on va saisir un password, il ne faut donc pas laisser en clair ce qui sera saisi.
Dans le même acabit: android:digits, android:numeric, android:textAllCaps, ...
et puis toujours android:text qui servira à préremplir le champ.
Pour récupérer ou modifier le texte saisi dans votre code, rien de plus simple:
Les méthodes getText() et setText() permettront de lire ou de positionner un texte.
Si vous voulez
récupérer dans du String le text, il faut savoir que getText est
de type editable (tout comme setText d'ailleurs). Il faudra donc faire une conversion:
Editable monText= monEditText.getText();
String monTextEnString=monText.toString();
Ou plus rapide, String monTextString=monEditText.getText().toString();
Par contre, pas de problème dans l'autre sens, il existe une méthode setText attendant du String en paramètre...
AutoCompleteTextView
Il s'agit d'une sous classe de TextView, elle proposera en plus de TextView une série de mots ayant un rapport avec ce que vous tapez.
Les explications étant un peu longues, voyez ce lien !
Image ou ImageView
Il s'agit de l'équivalent du label, mais avec une image ! Le widget se nomme ImageView
Les attributs les plus courants sont :
- android:layout_width et android:layout_height pour indiquer la place qu'occupera l'objet (voir chapitre Positionnement et occupation des surfaces des widgets)
- android:adjustViewBounds Positionner à true ou false
- android:src Pour indiquer l'image source
Il sera possible de charger une image bitmap via code:
imageView.setImageBitmap(bitmap); avec imageView, une instance ImageView de l'objet visé (par exemple: imageView=(ImageView)findViewById(R.id.imageView); avec R.id.imageView un objet ImageView défini dans le layout).
bitmap, une instance Bitmap de l'image à afficher.
ou depuis une ressource drawable:
imageView.setImageResource(ressourceId);
Bouton image ou WidgetButton
Il s'agit de l'équivalent de bouton, mais avec une image à la place d'un texte. C'est donc une sous-classe de ImageView et le widget se nommera WidgetButton.
RadioButton
Ou bouton radio en français. Il s'agit d'un objet qui peut prendre deux états.
Les attributs les plus courants sont:
android:text pour indiquer le texte qui sera associé au bouton radio
android:checked qui permet de positionner le radio-bouton dans un état:
"true" pour valide ou "false" pour non valide.
Comme souvent un radio-bouton est accompagné d'autres radio-boutons, et que seul un seul de ses radio-boutons ne doit pouvoir est actif à la fois, il sera possible de regrouper plusieurs radio-bouton ensemble via la balise RadioGroup.
Dans le cas de
l'utilisation d'un RadioGroup, restez cohérant et ne positionnez android:checked
que sur un seul des radio-boutons de ce groupe !
Pour avoir un exemple
de code complet d'utilisation d'un radio bouton, voir chapitre RadioGroup -
un listener s'impose !
RadioGroup
Un radio group ou un groupement de radio-boutons permet d'associer/unifier la gestion de plusieurs radio-boutons. C'est en effet dans ce cas au radiogroup que va incomber la tâche de conserver l'unicité d'un radio-bouton valide durant les phases de saisies de l'utilisateur.
Les attributs les plus courants seront:
android:layout_width et android:layout_height pour indiquer la place qu'occupera les radio-boutons (voir chapitre Positionnement et occupation des surfaces des widgets)
android:orientation avec là encore vertical ou horizontal comme valeurs...
Voici un exemple de codification:
[...]
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CHOIX 1"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CHOIX 2"
/>
</RadioGroup>
[...]
Il serait bien de connaitre les choix de l'utilisateur. Là encore, un listener s'impose (avec exemple de code) !
Des méthodes intéresantes:
check permet de positionné (cocher) un objet dans le radio group. Il suffit de passer l'id de cet objet (par exemple l'identifiant R.id.radio0 pour l'objet radio0 que vous auriez déclaré via l'attribut android:id="@+id/radio0"). La valeur -1, que l'on évitera, passée à cette méthode produira la même chose que la méthode clearCheck() qui est bien plus appropriée !
clearCheck() qui va effacer tous les tops positionnés dans le radio group.
getCheckedRadioButtonId() pour récupérer l'identifiant de l'objet coché (en doublon avec le listener qui retourne déjà cette information). Retourn -1 si aucun objet sélectionné.
CheckBox
Il s'agit de permettre à un utilisateur de cocher ou non une case.
Dans l'attibut android:text sera positionné le texte correspondant à la case à cocher.
Dans l'attribut android:checked, sera positionnée la valeur "true" ou "false" pour cocher ou décocher la checkbox par défaut.
Les attributs sont ensuites communs aux autres widgets views...
Là encore, un listener sera nécessaire, il s'agit du même listener que celui utilisé pour un radio bouton.
La lecture de l'état du checkbox se fera dans le listener en utilisant l'attribut isChecked(): true si sur on, false sinon !
ToggleButton
Il s'agit d'un interrupteur ON/OFF
Dans l'attribut android:checked, sera positionnée la valeur "true" ou "false" pour positionner sur ON ou sur OFF la toggle button par défaut.
L'attribut android:textOn permet de positionner le texte qui sera affiché lorsque le bouton est sur ON,
de même pour OFF, attribut android:textOFF.
Par exemple
android:textOn="@string/toggle_turn_on"
android:textOff="@string/toggle_turn_off"
(String, cf. internationnalisation)
Pour intercepter le changement de position du bouton, il faudra utiliser un listener bouton. La différence avec l'exemple donnée pour un bouton ? Utiliser la classe ToggleButton à la place de Button !
La lecture de l'état de ce bouton se fera dans le listener en utilisant l'attribut isChecked(): true si sur on, false sinon !
ListView
Objet permettant d'afficher une liste d'éléments dans laquelle l'utilisateur pourra choisir un ou plusieurs de ces éléments (Eventuellement une coche indiquera les éléments choisis).
Plus d'explications (car sujet plutôt vaste !)