DatePickerDialog的使用和套用
来源:互联网 发布:vb.net 用户控件 编辑:程序博客网 时间:2024/04/30 11:45
日期的选择控件DatePickerDialog
1.系统自带DatePickerDialog的使用:
private Calendar calendar;private int mYear;private int mMonth;private int mDay;private static final int DATE_DIALOG_ID = 0;private DatePickerDialog datePickerDialog;private DatePickerDialog showDateDialog(int id){ switch (id){ caseDATE_DIALOG_ID: return newDatePickerDialog(getActivity(),onDateSetListener,mYear,mMonth,mDay); } return null; } DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener(){ @Override public voidonDateSet(DatePicker datePicker, int y, int m, int d) { mYear = y; mMonth = m; mDay = d; updateDisPlay(); } }; private voidupdateDisPlay(){ dateTextView.setText(String.format("%04d-%02d-%02d", mYear,mMonth + 1, mDay)); }
使用时:
calendar = Calendar.getInstance();
mYear = calendar.get(Calendar.YEAR);
mMonth= calendar.get(Calendar.MONTH);
mDay =calendar.get(Calendar.DAY_OF_MONTH);
datePickerDialog = showDateDialog(DATE_DIALOG_ID);
datePickerDialog.show();
2.套用
public class DatePickerView extends AlertDialog implements DialogInterface.OnClickListener, 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 mCallBack; private View view; public DatePickerView(Context context,OnDateSetListener onDateSetListener, int year, intmonthOfYear, int dayOfMonth) { this(context, 0, onDateSetListener,year, monthOfYear, dayOfMonth); } public DatePickerView(Context context, inttheme, OnDateSetListeneronDateSetListener, int year, int monthOfYear, int dayOfMonth) { super(context, theme); mCallBack = onDateSetListener; Context themeContext = getContext();//將設置alertdialog的settitle和setButton方法注释掉,因为下面要使用setContentView(View view)方法//代替原有的setView(View view)方法,区别是替换的范围不同。替换后就不需要设置alertdialog的title和button了。// setButton(BUTTON_POSITIVE,//themeContext.getText(R.string.date_time_set), this);// setButton(BUTTON_NEGATIVE,themeContext.getText(R.string.cancel),// (OnClickListener) null);// setIcon(0);//setTitle(R.string.date_picker_dialog_title); LayoutInflater inflater =(LayoutInflater) themeContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE);//注意,其实datepickerdialog就是把系统提供的日期选择器DatePicker包装一下而已,所以只需要实现自己需要的布局样式//然后把DatePicker嵌套进去就可以了。 view =inflater.inflate(R.layout.date_picker_dialog, null); view.setBackgroundColor(Color.BLUE); mDatePicker = (DatePicker)view.findViewById(R.id.datePicker); mDatePicker.init(year, monthOfYear,dayOfMonth, this); //实现自己的按钮 setButton(); } public void myShow() {//自己实现show方法,主要是为了把setContentView方法放到show方法后面,否则会报错。 show(); setContentView(view); } private void setButton() {//获取自己定义的响应按钮并设置监听,直接调用构造时传进来的CallBack接口(为了省劲,没有自己写接口,直接用之前本类定义好的)同时关闭对话框。 view.findViewById(R.id.date_picker_ok).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v){ if (mCallBack != null){ mDatePicker.clearFocus(); mCallBack.onDateSet(mDatePicker, mDatePicker.getYear(), mDatePicker.getMonth(), mDatePicker.getDayOfMonth()); } dismiss(); } }); } @Override public void onClick(DialogInterfacedialogInterface, int i) { } @Override public void onDateChanged(DatePickerdatePicker, int year, int month, int day) { mDatePicker.init(year, month, day,null); } public DatePicker getDatePicker() { return mDatePicker; } public void updateDate(int year, intmonthOfYear, int dayOfMonth) { mDatePicker.updateDate(year,monthOfYear, dayOfMonth); } public interface OnDateSetListener { void onDateSet(DatePicker view, intyear, int monthOfYear, int dayOfMonth); } @Override public Bundle onSaveInstanceState() { Bundle state =super.onSaveInstanceState(); state.putInt(YEAR,mDatePicker.getYear()); state.putInt(MONTH,mDatePicker.getMonth()); state.putInt(DAY,mDatePicker.getDayOfMonth()); return state; } @Override public void onRestoreInstanceState(BundlesavedInstanceState) { super.onRestoreInstanceState(savedInstanceState); int year = savedInstanceState.getInt(YEAR); int month =savedInstanceState.getInt(MONTH); int day =savedInstanceState.getInt(DAY); mDatePicker.init(year, month, day,this); }}
<?xml version="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white_bg"> <TextView android:id="@+id/date_picker_title" android:layout_width="match_parent" android:layout_height="40dp" android:text="请选择日期" android:textColor="@color/text_color" android:gravity="center" android:background="@color/yellow"/> <DatePicker android:id="@+id/datePicker" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:calendarViewShown="false" android:spinnersShown="true" android:background="@color/white_bg"/> <TextView android:id="@+id/date_picker_ok" android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center" android:text="完成" android:textColor="@color/text_color" android:background="@color/yellow"/></LinearLayout>
使用时:
datePickerView = newDatePickerView(getActivity(),mDateSetListener,mYear,mMonth,mDay);
datePickerView.myShow();
//mDateSetListener类似上面的onDateSetListener 0 0
- DatePickerDialog的使用和套用
- 套用DatePickerDialog源码实现自定义样式的日期选择对话框
- android学习--DatePickerDialog和TimePickerDialog的使用
- DatePickerDialog和TimePickerDialog的简单使用
- DatePickerDialog的使用
- DatePickerDialog的使用
- DatePickerDialog的使用
- DatePickerDialog的使用
- DatePickerDialog的使用
- DatePickerDialog 的使用
- DatePickerDialog、TimePickerDialog的使用
- DatePickerDialog的简单使用
- DatePickerDialog的使用
- DatePickerDialog的简单使用
- DatePickerDialog的使用
- DatePicker、DatePickerDialog的使用
- DatePickerDialog的使用
- 组件的使用(四)DatePickerDialog和TimePickerDialog的使用
- CountDownTimer ---实现计数器
- setjmp.h
- PAT-JAVA-5-28 猴子选大王 (20分)
- 模仿源码自定义ArrayList
- 基于embedded jetty server的websocket开发
- DatePickerDialog的使用和套用
- 用Java去掉换行,输出一行
- Android属性动画
- 微信编辑自定义菜单
- UML之用例图分析(关联、泛化、包含、扩展)
- opengl漫游模型示例
- MySQL学习8:操作数据表(二)
- 单击显示onCreateContextMenu菜单
- How to Learn R