Comment personnaliser minutes d'intervalle dans TimePickerDialog dans Android
J'ai un TimePickerDialog de travail pour définir le temps qui est fixé à un TextView afin de l'afficher. Maintenant, j'ai besoin d'aide pour le mettre TimePicker (à l'intérieur de la TimePickerDialog) minutues intervalle de 15 minutes. J'ai vu il y a un post avec 15 minutes d'intervalle question liée à la TimePicker, mais je ne sais pas comment l'appliquer à la TimePickerDialog parce que je ne sais pas comment utiliser le TimePicker qu'il est créé à l'intérieur de la TimePickerDialog. Je suis nouveau sur Android et complètement perdu dans cette affaire. Merci à l'avance.
OriginalL'auteur jblanco | 2011-10-10
Vous devez vous connecter pour publier un commentaire.
À l'aide d'une combinaison de cette de @Rizwan et cette autre thread, je suis venu avec une solution combinée qui permet arbitraire par incréments d'une minute dans un
TimePickerDialog
. Le principal problème est que la plupart des fonctionnalités est caché par le androidTimePickerDialog
etTimePicker
classes et il ne semble pas êtreTimePickerDialog
pour nous permettre un accès plus facileTimePicker
pour recevoir et renvoyer des valeurs de laNumberPicker
honorer nos personnalisée incrément.Avertissement
Le principal problème avec les atteindre à l'intérieur de l'INTERFACE utilisateur est que les éléments sont référencés par les id qui sont susceptibles de changer, et même le nom de l'id n'est pas garanti d'être le même pour toujours. Cela dit, c'est de travailler, solution stable et susceptible de travailler pour l'avenir prévisible. À mon avis, le vide d'un bloc catch doit avertir que l'INTERFACE a changé et devrait revenir à la valeur par défaut (incrément de 1 minute) le comportement.
Solution
constructeur accepte la valeur de l'incrément et conserve quelques autres références. Notez qu'il omet de vérification des erreurs et nous préférerions
60%increment==0
onCreate utilise le nom de l'INTERFACE utilisateur des champs et de la réflexion afin de découvrir l'emplacement actuel. De nouveau, il omet de vérification d'erreur et devrait être 'fail-safe' c'est à dire revenir au comportement par défaut si quelque chose va mal.
onClick substituée pour renvoyer le bon minute de la valeur à la fonction de rappel auditeur
onStop remplacée pour éviter les (mauvaises) indice de la valeur retournée une deuxième fois, lorsque la boîte de dialogue se ferme. Allez-y, essayez-le vous-même.
Plus de cela vient de creuser dans le TimePickerDialog source.
Quand je change l'intervalle de 15 minutes, il fonctionne très bien. Vous ne savez pas si il y a aucune autre solution similaire à ce
Ok, j'ai réussi à résoudre les 30 minutes d'intervalle par l'ajout d'un onTimeChanged vérifier avec la dernière économiser des heures et des minutes. Si les deux sont différents, il ne fera que changer les minutes au lieu de deux, en utilisant
view.setCurrentHour(lastSavedHour)
. Mais je ne suis pas sûr si c'est un bon moyen de le faire... Mais si il y a une meilleure solution, n'hésitez pas à me le faire savoir 🙂Cela ne semble pas fonctionner dans android 5: m = rClass.getField("minute"); NumberPicker mMinuteSpinner = (NumberPicker)mTimePicker.findViewById(m.getInt(null)); ne retrouve pas les afficher
OriginalL'auteur David O'Meara
bien c'est très bien si vous avez utilisé le temps de sélecteur au lieu de temps sélecteur de boîte de dialogue. Mais il y a une solution pour cela.. voici ce que j'ai utilisé pour répondre à la même exigence.. j'ai utilisé CustomTimePickerDialog. Chaque chose sera de même, seulement TimePickerDialog va changer pour CustomTimePickerDialog dans le code.
Voici mon CustomTimePickerDialog classe... il suffit d'utiliser cette classe dans votre projet et de changement TimePickerDialog à CustomTimePickerDialog..
Après l'utilisation de ce CustomTimePickerDialog classe, Tout ce que vous devez faire est d'utiliser CustomTimePickerDialog au lieu de TimePickerDialog dans votre code pour accéder à/de défaut de priorité des fonctions de TimePickerDialog classe. Dans la manière la plus simple, je veux dire votre timeSetListener sera comme suit après cette...
Merci, @Rizwan Sohaib. Veuillez vous reporter à la question en commentaire ci-dessus.
OriginalL'auteur Rizwan Sohaib
Vous pouvez utiliser un AlertDialog et l'utilisation setView d'inclure une coutume TimePicker vue.
OriginalL'auteur njzk2
OriginalL'auteur Tharik ahamed