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. P>
Est-ce que quelqu'un sait-il comment limiter les dates d'Android DatePicker P>
5 Réponses :
Je suppose que vous devez implémenter votre propre datePicker code>. La logique derrière ce serait: "Seuls quelques développeurs limiteraient jamais le
DatePicker Code> afin qu'ils doivent mettre en œuvre les fonctionnalités eux-mêmes." P>
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.
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>.
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;
}
Pourquoi vous ne devez pas concevoir une nouvelle mise en page comme DaysPicker avec CustomOption. Vous pouvez faire avec des fileurs et des forloops. p>
Vous pouvez simplement définir: et p> où daturalog est un p> et le type de paramètre à régler pour maxDate et Mindate est un long code> p> p>
u peut y parvenir en tapant une ligne simple
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/... a >