简单的日期选择控件的实现(弹出日历,选择日期)
来源:互联网 发布:嘉实优化红利 编辑:程序博客网 时间:2024/05/19 13:45
项目地址:https://github.com/vikramkakkar/SublimePicker
星星 一千八的 值得拥有
很简单 直接compile 之后 就是 界面 自定义 DialongFragmeng activity代码 三个部分。
首先界面:
<EditText android:id="@+id/et" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="点击选择时间 "/>
然后 自定义DialogFragment:
//官方推荐的对话框碎片//DialogFragment 和Fragment一样的生命周期public class SublimePickerFragment extends DialogFragment { SublimePicker mSublimePicker; Callback mCallback; DateFormat mDateFormatter, mTimeFormatter; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mSublimePicker = (SublimePicker) getActivity().getLayoutInflater().inflate(R.layout.sublime_picker, container); Bundle arguments = getArguments(); SublimeOptions options = null; if (arguments != null) { options = arguments.getParcelable("SUBLIME_OPTIONS"); } mSublimePicker.initializePicker(options, mListener); return mSublimePicker; } SublimeListenerAdapter mListener = new SublimeListenerAdapter() { @Override public void onCancelled() { if (mCallback != null) { mCallback.onCancelled(); } dismiss(); } @Override public void onDateTimeRecurrenceSet(SublimePicker sublimeMaterialPicker, SelectedDate selectedDate, int hourOfDay, int minute, SublimeRecurrencePicker.RecurrenceOption recurrenceOption, String recurrenceRule) { if (mCallback != null) { mCallback.onDateTimeRecurrenceSet(selectedDate, hourOfDay, minute, recurrenceOption, recurrenceRule); } dismiss(); } }; //构造函数 // 初始化格式机器 设置时区 public SublimePickerFragment() { mDateFormatter = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault()); mTimeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault()); mTimeFormatter.setTimeZone(TimeZone.getTimeZone("GMT+0")); } public void setCallback(Callback callback) { mCallback = callback; } // For communicating with the activity public interface Callback { void onCancelled(); void onDateTimeRecurrenceSet(SelectedDate selectedDate, int hourOfDay, int minute, SublimeRecurrencePicker.RecurrenceOption recurrenceOption, String recurrenceRule); }}
最后activity代码:
public class Sampler extends AppCompatActivity { SelectedDate mSelectedDate; //回调函数 SublimePickerFragment.Callback mFragmentCallback = new SublimePickerFragment.Callback() { @Override public void onCancelled() { } @Override public void onDateTimeRecurrenceSet(SelectedDate selectedDate, int hourOfDay, int minute, SublimeRecurrencePicker.RecurrenceOption recurrenceOption, String recurrenceRule) { mSelectedDate = selectedDate; updateInfoView(); } }; private EditText edit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sampler); // Initialize views to display the chosen Date, Time & Recurrence options edit = (EditText)findViewById(R.id.et); edit.setInputType(InputType.TYPE_NULL); //设置点击事件跳转到日历界面。 edit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SublimePickerFragment pickerFrag = new SublimePickerFragment(); pickerFrag.setCallback(mFragmentCallback); //将信息传入到options中。 SublimeOptions options = new SublimeOptions(); int displayOptions = 0; displayOptions |= SublimeOptions.ACTIVATE_DATE_PICKER; options.setPickerToShow(SublimeOptions.Picker.DATE_PICKER); options.setDisplayOptions(displayOptions); options.setCanPickDateRange(true); // Valid options Bundle bundle = new Bundle(); bundle.putParcelable("SUBLIME_OPTIONS", options); pickerFrag.setArguments(bundle); pickerFrag.setStyle(DialogFragment.STYLE_NO_TITLE, 0);// pickerFrag.setStyle(DialogFragment.STYLE_NO_TITLE, 0); pickerFrag.show(getSupportFragmentManager(), "SUBLIME_PICKER"); } }); } // Show date, time & recurrence options that have been selected //显示选中的时间。 private void updateInfoView() { if (mSelectedDate != null) { edit.setText(applyBoldStyle("") .append(String.valueOf(mSelectedDate.getStartDate().get(Calendar.YEAR))) .append("-") .append(mSelectedDate.getStartDate().get(Calendar.MONTH) < 9 ? "0" + String.valueOf(mSelectedDate.getStartDate().get(Calendar.MONTH) + 1):String.valueOf(mSelectedDate.getStartDate().get(Calendar.MONTH) + 1)) .append("-") .append(mSelectedDate.getStartDate().get(Calendar.DAY_OF_MONTH) < 10 ? "0" + String.valueOf(mSelectedDate.getStartDate().get(Calendar.DAY_OF_MONTH)):String.valueOf(mSelectedDate.getStartDate().get(Calendar.DAY_OF_MONTH))) ); } } // Applies a StyleSpan to the supplied text private SpannableStringBuilder applyBoldStyle(String text) { SpannableStringBuilder ss = new SpannableStringBuilder(text); ss.setSpan(new StyleSpan(Typeface.BOLD), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return ss; }}
阅读全文
2 0
- 简单的日期选择控件的实现(弹出日历,选择日期)
- QCalendar的使用:实现弹出日历选择日期的例子
- 弹出日历窗口选择日期
- javascript实现的一个日期选择控件
- ExtJS5 - 实现带周数的日期选择控件
- 空白的日期选择控件
- Calendar(日历)--选择日期
- JQUERY DATEPICKER日历控件支持多种颜色弹出日历选择日期
- DatePickerDialog(日期选择)的简单应用
- 日历 日期段选择
- JavaScript 实现日历式日期选择
- JavaScript 实现日历式日期选择
- JavaScript 实现日历式日期选择
- JavaScript 实现日历式日期选择
- JavaScript 实现日历式日期选择
- 一个可以选择日期的弹出框(附在EditText)
- 简单的实现EditText点击实现日期选择弹框
- DatePicker(日期选择自定义服务器控件)的实现
- Dubbo(3)——应用启动与停止脚本,超详细解析
- 集群概念—— 分布式与集群的联系与区别
- 最近遇到的一些问题总结(UIScroll和Tips穿透问题)
- C#WPF使用AForge类库操作USB摄像头拍照并保存
- 由JS for 循环中为元素添加点击事件到JS 中的事件委托
- 简单的日期选择控件的实现(弹出日历,选择日期)
- More than React(四)HTML也可以静态编译?
- 排序之冒泡排序
- Android开发之下拉刷新和上拉加载框架PullToRefresh的详谈
- Redis 基础
- 曲线分段绘制
- CentOS 7下安装配置FTP
- 轻量级Linux系统Boot2Docker中快速运行Tomcat应用
- 用过的linux命令汇集