package cn.com.basic.face.dialog; import android.app.AlertDialog; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.widget.DatePicker; import com.bsk.zhangbo.demoforbsk.R; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.event.OnClick; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * Created by Sinoe on 2017/2/28. */ public class BirthdayPickerDialog extends AlertDialog implements DatePicker.OnDateChangedListener{ private static final String YEAR = "year"; private static final String MONTH = "month"; private static final String DAY = "day"; private final DatePicker mDatePicker; private final OnDateSetListener mDateSetListener; private final Calendar mCalendar; private boolean mTitleNeedsUpdate = true; private View view; public BirthdayPickerDialog(Context context, int theme, OnDateSetListener listener, Date date) { super(context,theme); mDateSetListener = listener; mCalendar = Calendar.getInstance(Locale.CHINA); mCalendar.setTime(date); Context themeContext = getContext(); LayoutInflater inflater = LayoutInflater.from(themeContext); view = inflater.inflate(R.layout.dialog_date_picker, null); view.setBackgroundColor(Color.WHITE); ViewUtils.inject(this, view); //setView(view); // setButton(BUTTON_POSITIVE, themeContext.getString(R.string.ok), this); // setButton(BUTTON_NEGATIVE, themeContext.getString(R.string.cancel), this); // setButtonPanelLayoutHint(LAYOUT_HINT_SIDE); mDatePicker = (DatePicker) view.findViewById(R.id.datePicker); mDatePicker.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this); // mDatePicker.setValidationCallback(mValidationCallback); //实现自己的标题和ok按钮 //setTitle("选择日期:"); } @Override public void onDateChanged(DatePicker datePicker, int year, int month, int day) { mDatePicker.init(year, month, day, this); } /** * The callback used to indicate the user is done filling in the date. */ public interface OnDateSetListener { /** * @param view The view associated with this listener. * @param year The year that was set. * @param monthOfYear The month that was set (0-11) for compatibility * with {@link java.util.Calendar}. * @param dayOfMonth The day of the month that was set. */ void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth); } @OnClick(R.id.date_picker_ok) public void date_picker_ok_click(View view) { if (mDateSetListener != null) { // Clearing focus forces the dialog to commit any pending // changes, e.g. typed text in a NumberPicker. mDatePicker.clearFocus(); mDateSetListener.onDateSet(mDatePicker, mDatePicker.getYear(), mDatePicker.getMonth(), mDatePicker.getDayOfMonth()); cancel(); } } @OnClick(R.id.date_picker_cancel) public void date_picker_cancel_click(View view) { cancel(); } public void myShow() { //自己实现show方法,主要是为了把setContentView方法放到show方法后面,否则会报错。 show(); setContentView(view); } @NonNull @Override public Bundle onSaveInstanceState() { return super.onSaveInstanceState(); } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } }