11

私はAndroidでdatePickerを使用して、ユーザーが選択した日付に基づいて画像を表示しています。たとえば、2010年1月1日から2010年12月31日まで、上記の日付を特定の日に制限する必要があります。思ったほど簡単ですが、これらの日付を制限する方法についての答えはどこにもありません。

AndroidDatePickerの日付を制限する方法を知っている人はいますか

4

5 に答える 5

1

回答するには遅すぎるかもしれませんが、 の日付を設定するのはmin簡単maxですDatePickerDialogすべての Android バージョンで動作しますDatePickerDialog単純に、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;
}
于 2013-08-30T19:56:27.983 に答える
0

私はあなたがあなた自身を実装しなければならないと思いますDatePicker。この背後にある論理は次のようになります。「少数の開発者だけが制限するDatePickerので、自分で機能を実装する必要があります。」

于 2010-03-26T19:48:53.970 に答える
0

customoption を使用して DatePicker のような新しいレイアウトを設計しない理由。Spinners と Forloops で行うことができます。

于 2014-05-08T05:16:28.347 に答える