package cn.com.basic.face.dialog;
|
|
import android.app.AlertDialog;
|
import android.app.DatePickerDialog;
|
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 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);
|
//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("选择日期:");
|
setButton();
|
}
|
|
@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);
|
}
|
|
private void setButton() {
|
//获取自己定义的响应按钮并设置监听,直接调用构造时传进来的CallBack接口(为了省劲,没有自己写接口,直接用之前本类定义好的)同时关闭对话框。
|
view.findViewById(R.id.date_picker_ok).setOnClickListener(
|
new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
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();
|
}
|
}
|
});
|
view.findViewById(R.id.date_picker_cancle).setOnClickListener(
|
new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
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);
|
}
|
}
|