DoubleDatePickerDialog.java public class DoubleDatePickerDialog extends AlertDialog implements OnClickListener, OnDateChangedListener { private static final String START_YEAR = "start_year"; private static final String START_MONTH = "start_month"; private static final String START_DAY = "start_day"; private final DatePicker mDatePicker_start; // private final DatePicker mDatePicker_end; private final OnDateSetListener mCallBack; /** * 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 startDatePicker, int startYear, int startMonthOfYear, int startDayOfMonth); } /** * @param context * The context the dialog is to run in. * @param callBack * How the parent is notified that the date is set. * @param year * The initial year of the dialog. * @param monthOfYear * The initial month of the dialog. * @param dayOfMonth * The initial day of the dialog. */ public DoubleDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) { this(context, 0, callBack, year, monthOfYear, dayOfMonth); } public DoubleDatePickerDialog(Context context, int theme, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) { this(context, 0, callBack, year, monthOfYear, dayOfMonth, true); } /** * @param context * The context the dialog is to run in. * @param theme * the theme to apply to this dialog * @param callBack * How the parent is notified that the date is set. * @param year * The initial year of the dialog. * @param monthOfYear * The initial month of the dialog. * @param dayOfMonth * The initial day of the dialog. */ public DoubleDatePickerDialog(Context context, int theme, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth, boolean isDayVisible) { super(context, theme); mCallBack = callBack; Context themeContext = getContext(); setButton(BUTTON_POSITIVE, "确 定", this); setButton(BUTTON_NEGATIVE, "取 消", this); setIcon(0); LayoutInflater inflater = (LayoutInflater) themeContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.date_picker_dialog, null); setView(view); mDatePicker_start = (DatePicker) view .findViewById(R.id.datePickerStart); mDatePicker_start.init(year, monthOfYear, dayOfMonth, this); } public void onClick(DialogInterface dialog, int which) { // 如果是“取 消”按钮,则返回,如果是“确 定”按钮,则往下执行 if (which == BUTTON_POSITIVE) tryNotifyDateSet(); } @Override public void onDateChanged(DatePicker view, int year, int month, int day) { if (view.getId() == R.id.datePickerStart) mDatePicker_start.init(year, month, day, this); } /** * 获得开始日期的DatePicker * * @return The calendar view. */ public DatePicker getDatePickerStart() { return mDatePicker_start; } /** * Sets the start date. * * @param year * The date year. * @param monthOfYear * The date month. * @param dayOfMonth * The date day of month. */ public void updateStartDate(int year, int monthOfYear, int dayOfMonth) { mDatePicker_start.updateDate(year, monthOfYear, dayOfMonth); } private void tryNotifyDateSet() { if (mCallBack != null) { mDatePicker_start.clearFocus(); mCallBack.onDateSet(mDatePicker_start, mDatePicker_start.getYear(), mDatePicker_start.getMonth(), mDatePicker_start.getDayOfMonth()); } } @Override protected void onStop() { super.onStop(); } @Override public Bundle onSaveInstanceState() { Bundle state = super.onSaveInstanceState(); state.putInt(START_YEAR, mDatePicker_start.getYear()); state.putInt(START_MONTH, mDatePicker_start.getMonth()); state.putInt(START_DAY, mDatePicker_start.getDayOfMonth()); return state; } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); int start_year = savedInstanceState.getInt(START_YEAR); int start_month = savedInstanceState.getInt(START_MONTH); int start_day = savedInstanceState.getInt(START_DAY); mDatePicker_start.init(start_year, start_month, start_day, this); } }
public class MainActivity extends Activity { Button btn; TextView et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.dateBtn); et = (TextView) findViewById(R.id.et); btn.setOnClickListener(new View.OnClickListener() { Calendar c = Calendar.getInstance(); @Override public void onClick(View v) { // 最后一个false表示不显示日期,如果要显示日期,最后参数可以是true或者不用输入 new DoubleDatePickerDialog(MainActivity.this, 0, new DoubleDatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker startDatePicker, int startYear, int startMonthOfYear, int startDayOfMonth) { String textString = String.format("开始时间:%d-%d-%d\n", startYear, startMonthOfYear + 1, startDayOfMonth); et.setText(textString); } }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), false).show(); } }); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorVisible="false" android:editable="false" /> <Button android:id="@+id/dateBtn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="日期对话框" /> </LinearLayout>
date_picker_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" android:paddingTop="10dp" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" android:padding="5dip" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开始日期" /> <DatePicker android:id="@+id/datePickerStart" android:layout_width="wrap_content" android:layout_height="wrap_content" android:calendarViewShown="false" /> </LinearLayout> <!-- <ImageView android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/fenge" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" android:padding="5dip" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="结束日期" /> <DatePicker android:id="@+id/datePickerEnd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:calendarViewShown="false" /> </LinearLayout> --> </LinearLayout>
相关推荐
【uniappDemo(选择日期、评分条、弹出框).zip】是一个压缩包,其中包含了一个基于uni-app框架的示例项目,这个项目整合了日期选择器、评分条和弹出框这三个常用的UI组件。uni-app是一个跨端开发框架,它允许开发者...
"android日期选择弹出框"就是一个解决此类需求的解决方案。它使用了一个开源组件,叫做`wheel`,来实现年、月、日的滚动选择,并且能够通过回调将用户选定的日期值返回到应用中。 `wheel`组件是一种常见的UI控件,...
3. 弹出框实现:常见的弹出日期框实现方式有两种:一种是创建一个新的HTML元素,如`<div>`,并在需要时将其显示在页面上;另一种是使用浏览器内置的`<input type="date">`标签,但这种方法的样式和功能可能受到...
fixPosition:设定是否弹出框随滚动条一起浮动,保持在屏幕的固定位置,默认为true dragOut:设定是否允许拖出屏幕范围,默认为false。 autoClose:设定用户点击窗口中按钮后自动关闭窗口,默认为true(设定为...
在网页设计和开发中,创建用户友好的交互是至关重要的,而“点击input,弹出日期选择框”正是实现这一目标的一种常见方法。这个功能可以让用户方便地输入或选择日期,提高了数据输入的准确性和效率。下面我们将详细...
自动完成功能通常会动态地从服务器获取数据,然后实时更新在弹出框中显示的选项。 最后是“WdatePicker.js”,这是一款基于JavaScript的日期选择器插件,它为网页提供了方便的日期选择功能。在弹出框中,日期选择器...
在实现这种控件时,开发者可能需要使用到JavaScript的一些核心概念,例如事件监听(如点击事件)、DOM操作(如获取元素位置、改变样式)以及可能的CSS(级联样式表)来控制弹出框的样式和动画效果。对于时间的选择,...
本文将深入探讨如何在Android平台上创建一个仿iOS弹出框效果,包括底部弹出的日期选择器和地址选择器。我们将讨论相关的UI组件、布局设计以及事件处理等方面的知识点。 首先,iOS的弹出框效果通常被称为“Action ...
3. **弹出框实现**:在HTML5中,`<input type="date">`会生成一个内置的日期选择器,但如果我们需要更自定义的样式或功能,可以使用模态对话框(modal dialog)来创建一个弹出框。这通常涉及CSS来定义样式,以及...
在网页设计中,弹出层、模态框和对话框是不可或缺的元素,它们用于向用户展示重要信息、获取用户输入或执行特定操作。在这个名为"Ply-master"的项目中,我们可以推测它提供了一个优雅的JavaScript实现,用于创建这些...
标题“文本框获取焦点弹出下拉框”涉及到的是网页交互设计中的一种常见功能,它通常用于实现输入框(input)的自动补全或者下拉选项选择。在Web开发中,这种功能可以极大提升用户体验,让用户能够快速找到并选择所需...
5. **月历窗口_组件**和**时间窗口_组件**:这两个组件可能是指在日期时间框中弹出的月历和时间选择窗口,它们提供了更直观的日期和时间选择方式。开发者可以自定义这些窗口的外观和行为,以适应不同的用户界面需求...
本资源“基于jQuery实现弹出框选择生日特效源码.zip”提供了一个利用jQuery创建的弹出框功能,用于用户选择生日日期。这种特效常用于注册表单或个人资料编辑页面,提升用户体验。 首先,让我们详细了解一下jQuery的...
在Android开发中,自定义日期选择框是一种常见的...通过以上这些步骤,你可以构建出一个功能完备、符合设计要求的自定义日期选择框。在实际开发过程中,可能还需要根据具体需求进行调整和优化,以实现最佳的用户体验。
【标题】中的“一套值得推荐的含日历,弹出框,Ajax表单等JS框架V2.0源码及例子程序”表明这是一套基于JavaScript的开发资源,主要包括日历功能、弹出框组件以及Ajax表单处理的框架。这个框架已经更新到了第二版,...
这个“IOS应用源码——弹出框显示的Picker control.zip”压缩包提供了一个实例,展示了如何在iOS应用中实现一个以弹出框形式展示的Picker Control。下面将详细介绍相关的知识点。 1. UIPickerView: UIPickerView 是...
H5小程序难免会用到从底部弹出时间选择框,在这里使用了jquery-weui实现了,店铺选择营业时间的功能。已经做好了时间格式和开始时间与结束时间的对比。注意使用的时候可以任意改动样式,但是jquery-weui自带的样式不...
"js控件大全,消息提示,菜单演示,弹出框,各种特效"这个资源集合了一系列常用的JavaScript控件和功能,旨在帮助开发者快速创建功能丰富的Web应用。让我们详细探讨一下其中涉及的知识点。 首先,**消息提示**是...
在VB(Visual Basic)编程中,"弹出日期"通常指的是使用对话框让用户选择一个日期的交互功能。VB提供了多种方法来实现这一功能,其中最常用的是`InputBox`和`DateTimePicker`控件。在这里,我们将深入探讨这两个方法...