Bonsoir,
j'ai un problème, j'ai besoin d'un genre de ToggleButton avec 3 positions au lieux de 2 (on / off) mais je me demande si c'est possible de faire ce genre de bouton.
Qu'en pensez vous?
Bonsoir,
j'ai un problème, j'ai besoin d'un genre de ToggleButton avec 3 positions au lieux de 2 (on / off) mais je me demande si c'est possible de faire ce genre de bouton.
Qu'en pensez vous?
A ma connaissance il n'existe pas de boutons à 3 états dans Android...
Il y a deux façons de le faire:
Utiliser un "button" classique, et changer son drawable (background) si l'état est indéfini à la main, dans le code, pour chaque bouton.
Ou alors la façon "hard":
Créer de toute pièce un state "Undefined" (dans les attributes)
Et une classe "ThreeStatesButton" qui surcharge onCreateStateSet (ou un truc du genre je me souviens plus) pour utiliser cet état (et probablement stocker un boolean "isUndefined")
Par la suite, le selector du background du bouton pourra utiliser ce state pour choisir une autre image....
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Ah d'accord je vais réfléchir là dessus je pense que je peux y arriver. Seul hic c'est que je crois que les méthodes relatives aux boutons ne sont pas disponibles pour l'API 8 et mon appli doit absolument être compatble avec cet API.
En fait c'est pour créer un bouton répétition (statu répétition off / répétition piste / répétition tout) dans un lecteur de musique, et ça n'a pas été invienté hier.
j'ai cherché une autre solution et je suis sur qu'il y a moyen de le faire avec un algorithme "if / else if /else" mais il me manque une méthode en java qui permet de redéfinir le background d'un bouton (avec l'api 8)
Bonjour
Il existe des implementations pourAndroid pour avoir le même genre de bouton que sous ios (SegementedControl)
voici un exemple:
https://github.com/makeramen/android...tedradiobutton
ou
http://blog.bookworm.at/2010/10/segm...n-android.html
Comme le dis nicroman tu peux te créer toi même ton bouton mais le mieux dans ce cas est de passer par la classe RadioButton qui sera plus facile à implémenter que la classe Button.
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Ce n'est pas ce que j'avais en tête, en fait c'est comme un seul bouton qui a la base est noir par exemple, ensuite quand on appuie une fois il devient bleu, on rappuie sue ce même bouton il devient vert, et à la troisième fois il redevient noir, et ainsi de suite...
merci quand même du bouton séquentiel, j'en aurai peut besoin plus tard.
Dans ce cas par sur un bouton simple que tu personnalises.Ce n'est pas ce que j'avais en tête, en fait c'est comme un seul bouton qui a la base est noir par exemple, ensuite quand on appuie une fois il devient bleu, on rappuie sue ce même bouton il devient vert, et à la troisième fois il redevient noir, et ainsi de suite...
Avec une variable à trois états , et tu dessines la bonne image à chaque click sur le bouton en incrémentant ta variable.
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
C'est ce que je me suis dit sauf que je ne sais comment comment créer la variable à trois états...
Méthode sale (pre Java6)
Méthode propre (Java6+)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int variable; static public int VALUE_1=0; static public int VALUE_2=1; static public int VALUE_3=2;
pour passer de l'un à l'autre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 static public enum Value { VALUE_1, VALUE_2, VALUE_3 }; Value variable;
méthode sale:
méthode propre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 variable = (variable + 1) % 3;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 static public enum Value { VALUE_1, VALUE_2, VALUE_3; public Value next() { Value[] all = values(); return all[(ordinal()+1)%all.length]; } }; variable = variable.next();
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Merci cet algorithme est plus propre que celui auquel j'avais pensé (un banal if / esle if / else), donc maintenant il ne me manque plus qu'à trouver un moyen de définir un brackground pour le bouton, en java et compatible avec l'API Android 8
En tous cas merci pour l'aide !
Personne ne connait une méthode pour définir le background d'un bouton en java? et si possible utilisable avec l'API 8? Merci d'avance.
Bonjour,
Par cette méthode avec un drawable
http://developer.android.com/referen...dResource(int)
avec une ressource
http://developer.android.com/referen...dResource(int)
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Je n'arrive pas à utiliser ce code, et il y a des erreurs que je ne sais pas résoudre...Méthode propre (Java6+)
pour passer de l'un à l'autre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 static public enum Value { VALUE_1, VALUE_2, VALUE_3 }; Value variable;
méthode propre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 static public enum Value { VALUE_1, VALUE_2, VALUE_3; public Value next() { Value[] all = values(); return all[(ordinal()+1)%all.length]; } }; variable = variable.next();
Pourtant:
Compile sans problême... c'est quoi les erreurs ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 static public enum Value { VALUE_1, VALUE_2, VALUE_3; public Value next() { Value[] all = values(); return all[(ordinal()+1)%all.length]; } }
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Voici les erreurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 static public enum Value { // ici Value a comme erreur "The member enum Value can only be defined inside a top-level class or interface" VALUE_1, VALUE_2, VALUE_3; public Value next() { Value[] all = values(); return all[(ordinal()+1)%all.length]; //il faut créer une méthode original, je ne comprends pas tout... } private int ordinal() { // TODO Auto-generated method stub return 0; } }
Et vu que je ne connais pas ce code je me demande aussi où je définis les images en tant que background. Je me suis dit que c'était peut être les VALUES mais je n'ai pas le temps de chercher des heures parce que j'ai plein d'autres choses à coder...
Et merci de l'aide apportée jusque là
Pourtant le message d'erreur est clair:
"The member enum Value can only be defined inside a top-level class or interface"
Tu as du déclarer l'enum dans une fonction ou je ne sais quoi...
Pour les images c'est dans drawable...
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Non, hors mis le code cité je n'ai rien tapé en relation avec celui-ci. Et pour les images je demandais si je dois les déclarer de la manière "VALUE_1 = (R.drawable.bouton_1)" etc...?
C'est bizarre mon idée est pourtant toute simple, il s'agit simplement d'un bouton permettant de choisir le mode de répétition d'une liste de lecture, ça ne devrai en théorie pas être compliqué non?
[petite apartée]
Dans le SDK révision 12 il y avait encore un sample d'application lecteur musique (je ne me rappelle plus le nom) très simple mais qui m'était utile, quand j'ai fait la mise à jour vers la révision 20 ce sample a disparu. Je l'ai recherché sur internet sans succès, j'ai aussi cherché un code source d'appli mais là non plus ce n'était pas concluant. Si vous pouvez m'aider je vous en remercie d'avance, sinon tant pis je me débrouillerai sans.
Mais ca ne l'est pas (compliqué)... Je le fais tous les jours....
Avec un code qui ressemble à celui que je t'ai donné pour les valeurs...
Et dans le code:
Il semble que tu ai de menus problèmes avec Java, cela ne doit pas aider...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int resId = (enum == VALUE_1) ? R.drawable.xxxxx : (enum == VALUE_2) ? R.drawable.yyyy : R.drawable.zzzz; button.setBackgroundResource(resId);
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Ah merci ça va m'être utile. Et en effet j'ai appris le java depuis peu et du coup je ne le maîtrise pas encore, surtout pour Android...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager