Aller au contenu

TimePicker et intervalle


Remix

Recommended Posts

Salut à tous,

Je cherche à modifier le comportement du widget TimePicker.

Je souhaiterais qu'un clic sur les boutons "+" ou "-" augmente ou diminue la valeur correspondante de 5 et non de 1 comme c'est le cas par défaut.

Ainsi, si 13h37 est sélectionné, un clic sur le "+" des minutes fait passer l'heure à 13h42.

J'ai eu beau chercher sur Google mais je n'ai rien trouvé d'intéressant :(

Merci d'avance pour vos réponses !

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Attention, ce que je vais dire je ne l'ai pas essayé ^^ mais :

Peut être peux tu utiliser la méthode des API (vu ici):

public void setOnTimeChangedListener (TimePicker.OnTimeChangedListener onTimeChangedListener)
Since: API Level 1

Celle ci te permet de détecter un changement utilisateur sur le timepicker cela contient une méthode à implémenter toi même (voir ici)

Et sur le onTimeChanged - changement de minute faire :

MonTimePicker.setCurrentMinute (MonTimePicker.getCurrentMinute () + 5);

En espérant que ca aide,

Jok

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse.

Effectivement, la méthode setOnTimeChangedListener est la bonne.

Je ne peux pas savoir si c'est le bouton + ou le bouton - qui a été pressé mais je me suis arrangé en sauvegardant les anciennes valeurs à chaque fois et en les comparant avec les nouvelles (c'est mal expliqué mais ça fonctionne :)).

Il reste cependant un problème, c'est que je n'arrive pas à désactiver les deux EditText, ou du moins à capter qu'une modification manuelle a été apportée.

Donc quand l'utilisateur change l'heure "à la main", ça ajoute aussi l'intervalle :(

Lien vers le commentaire
Partager sur d’autres sites

Solution :

Logiquement si l'utilisateur utilise EditText ce n'est pas pour rajouter 1 minute ... enfin ca parait logique.

Donc tu peux faire un truc un peu plus smart

En pseudo code (et sans prendre en compte ta problématique de +/-) :

if(Abs(AfterMinuteTime - BeforeMinuteTime) == 1) {
MonTimePicker.setCurrentMinute (MonTimePicker.getCurrentMinute () + 5);
}

En gros si modification de 1 minutes tu appliques le 5 sinon c'est que c'est du manuel ^^

Jok

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...