11
votes

Définir les limites de date Android DatePicker

J'utilise DatePicker dans Android pour afficher des images en fonction des dates sélectionnées par l'utilisateur. J'ai besoin de limiter lesdites dates à certains jours, par exemple le 1er janvier 2010 au 31 décembre 2010. Simple que je pensais, mais pas d'où puis-je trouver la réponse sur la façon de limiter ces dates.

Est-ce que quelqu'un sait-il comment limiter les dates d'Android DatePicker


1 commentaires

J'ai réussi à définir de manière programmative les dates sélectionnables MIN, max, et définissez également la date actuelle (par défaut) de la vue DatePicer: Stackoverflow.com/questions/6421874/...


5 Réponses :


0
votes

Je suppose que vous devez implémenter votre propre datePicker . La logique derrière ce serait: "Seuls quelques développeurs limiteraient jamais le DatePicker afin qu'ils doivent mettre en œuvre les fonctionnalités eux-mêmes."


3 commentaires

De plus, pour XML, certaines propriétés supplémentaires sont disponibles comme Bottyear Begayear, vous pouvez l'utiliser pour les limites.


Où puis-je trouver les informations sur le début de l'endyear Beginyear, sonnent à ce que cela fonctionnerait assez bien. J'avais peur de la réponse mise en œuvre la mienne, espérons que ces propriétés XML vont échapper.


Les limites de Endyear et de Beginyear ne fonctionnent que avec Widget et non la boîte de dialogue réelle DatePicker que j'utilise. Je chercherai à voir comment implémenter le widget à la place, à moins que quiconque puisse offrir des informations sur la manière d'appliquer des limites à la boîte de dialogue.



1
votes

Il peut être trop tard pour répondre, mais il est facile de définir le min code> et max code> date de DatePickerDialog code>. fonctionne pour toutes les versions Android strong>. Il vous suffit simplement de renvoyer le DatePickerDialog code> en fonction de la version Android

protected Dialog onCreateDialog(int id)
{
    switch ( id )
    {
        case DATE_DIALOG_ID:
            DatePickerDialog dialog = null;
            if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
            {
                dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
                {
                    @Override
                    public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
                    {
                        mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
                    }
                }, year, month - 1, date);
                Calendar currentDate = Calendar.getInstance();
                dialog.getDatePicker().setMaxDate(currentDate.getTimeInMillis());
                //If you need you can set min date too
            }
            else
            {
                dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
                {
                    @Override
                    public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
                    {
                        mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
                    }
                }, year, month - 1, date)
                {
                    @Override
                    public void onDateChanged(DatePicker view, int year, int month, int day)
                    {
                        if ( year <= maxYear && month + 1 <= maxMonth && date <= maxDate ) //meets your criteria
                        {
                            view.updateDate(year, month, date); //update the date picker to selected date
                        }
                        else
                        {
                            view.updateDate(maxYear, maxMonth - 1, maxDate); // or you update the date picker to previously selected date
                        }
                    }
                };
            }
            return dialog;
    }
    return null;
}


0 commentaires

0
votes

Pourquoi vous ne devez pas concevoir une nouvelle mise en page comme DaysPicker avec CustomOption. Vous pouvez faire avec des fileurs et des forloops.


0 commentaires

7
votes

Vous pouvez simplement définir: xxx

et xxx

où daturalog est un xxx

et le type de paramètre à régler pour maxDate et Mindate est un long


0 commentaires

0
votes

u peut y parvenir en tapant une ligne simple xxx


0 commentaires