如何设置Max Date Dialog Picker仍显示值

时间:2017-07-20 04:02:37

标签: android

Show Date Dialog Picker

亲爱的所有人。 我正在使用日期选择器对话框进行测试,当我设置它时,它会显示看起来像图像。 但是,现在我想显示这个月的剩余日期。 例如,我设置max是2017年7月20日,它只显示下个月的第一天(2017年8月1日),它隐藏了从21/07 - 30/07的日子。 每个人都可以帮助我。 非常感谢你!

这是我的代码

public class MainActivity extends AppCompatActivity {

@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.but);

    final Calendar calendar = Calendar.getInstance();
    final int year = calendar.get(Calendar.YEAR);
    final int month = calendar.get(Calendar.MONTH);
    final int day = calendar.get(Calendar.DAY_OF_MONTH);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DatePickerDialog dialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {

                }
            }, year, month, day);
            //dialog.getDatePicker().setMinDate(System.currentTimeMillis());
            dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());
            dialog.show();
        }
    });
}

1 个答案:

答案 0 :(得分:0)

我想你可以尝试下面的代码:

      @SuppressLint("ValidFragment")
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    public SelectDateFragment() {
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        DatePickerDialog datePickerDialog;
        int yy = calendar.get(Calendar.YEAR);
        int mm = calendar.get(Calendar.MONTH);
        int dd = calendar.get(Calendar.DAY_OF_MONTH);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
            datePickerDialog=new DatePickerDialog(this,android.R.style.Theme_Material_Light_Dialog, this, yy, mm, dd);
        else
            datePickerDialog=new DatePickerDialog(this, this, yy, mm, dd);

        Calendar maxDate=Calendar.getInstance();
        maxDate.add(Calendar.DATE, 1);

     // here you are adding maxdate 
   datePickerDialog.getDatePicker().setMaxDate(maxDate.getTimeInMillis());
        return datePickerDialog;
    }

    public void onDateSet(DatePicker view, int yy, int mm, int dd) {

       //  get the date here and use it

    }
}

以及如何使用上述课程

  • 首先声明一个对象

     DialogFragment dateFragment = new SelectDateFragment();
    
  • 点击某个按钮或其他内容时显示

     dateFragment.show(getFragmentManager(), "DatePicker");