`

只显示月和日的DatePickerDialog

 
阅读更多

前言
需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但DatePickerDialog并没有直接提供方法来操作,这里分享一个笨办法:)

声明
  欢迎转载,但请保留文章原始出处:)
    博客园:http://www.cnblogs.com
    农民伯伯: http://over140.cnblogs.com 

正文

  一、效果图

    1.1 默认

 

    1.2 处理后 

 

 

  二、实现代码

    2.1  代码片段1

复制代码
    /**
     * 从当前Dialog中查找DatePicker子控件
     * 
     * 
@param group
     * 
@return
     
*/
    
private DatePicker findDatePicker(ViewGroup group) {
        
if (group != null) {
            
for (int i = 0, j = group.getChildCount(); i < j; i++) {
                View child 
= group.getChildAt(i);
                
if (child instanceof DatePicker) {
                    
return (DatePicker) child;
                } 
else if (child instanceof ViewGroup) {
                    DatePicker result 
= findDatePicker((ViewGroup) child);
                    
if (result != null)
                        
return result;
                }
            }
        }
        
return null;

    } 

复制代码
      代码说明:
        通过断点也看到Dialog的ContentView里有DatePicker子控件,这里通过遍历的办法来查找这个控件。

    2.2  使用代码

复制代码
        final Calendar cal = Calendar.getInstance();
        mDialog 
= new CustomerDatePickerDialog(getContext(), this,
            cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
            cal.get(Calendar.DAY_OF_MONTH));
        mDialog.show();
        
        DatePicker dp 
= findDatePicker((ViewGroup) mDialog.getWindow().getDecorView());
        
if (dp != null) {
            ((ViewGroup) dp.getChildAt(
0)).getChildAt(0).setVisibility(View.GONE);

        } 

复制代码

      代码说明:

        通过源码可以看得到DatePicker内置三个NumberPicker控件,依次表示年、月、日,隐藏掉第一个即可。

 

 

    三、补充

      后续使用中发现标题栏也要改,通过查看DatePickerDialog源码,需要自定义并实现onDateChanged方法才可实现,如下代码:

复制代码
    class CustomerDatePickerDialog extends DatePickerDialog {

        
public CustomerDatePickerDialog(Context context,
                OnDateSetListener callBack, 
int year, int monthOfYear,
                
int dayOfMonth) {
            
super(context, callBack, year, monthOfYear, dayOfMonth);
        }

        @Override
        
public void onDateChanged(DatePicker view, int year, int month, int day) {
            
super.onDateChanged(view, year, month, day);
            mDialog.setTitle((month 
+ 1+ "" + day + "");
        }
    }
复制代码
分享到:
评论

相关推荐

    基于WheelView自定义的DatePickerDialog

    在DatePickerDialog中,我们可能需要三个WheelView,分别用于年、月和日的选择。 要创建基于WheelView的DatePickerDialog,我们需要以下步骤: 1. **设计布局**:首先,为Dialog创建一个XML布局文件,包含三个...

    DatePickerDialog的使用

    需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但DatePickerDialog并没有直接提供方法来操作,这里分享一个笨办法:)

    Android日期选择器对话框DatePickerDialog使用详解

    `onDateSet`方法会在用户在DatePickerDialog中选择日期后被调用,`year`、`monthOfYear`和`dayOfMonth`分别代表选择的年、月和日。这里我们格式化日期字符串并将其显示在`tv_data`这个TextView上。 4. **样式和...

    Android 中NumberPicker,DatePicker与DatePickerDialog中分割颜色的修改实例代码

    `DatePicker`控件用于选择日期,它由三个`NumberPicker`组成,分别表示年、月和日。由于`DatePicker`内部使用了`NumberPicker`,所以我们可以通过类似的方式来改变它的分割线颜色。代码如下: ```java public ...

    点击按钮弹出时间或日历选择的源码 Test.zip

    `DatePickerDialog`则用于让用户选择日期,包括年、月和日。创建一个`DatePickerDialog`的流程如下: 1. **创建实例**: 使用`DatePickerDialog`的构造函数,传入上下文、初始日期、监听器。 ```java ...

    Android学习笔记(二一):有趣的widget-日期和时间.doc

    DatePicker是一个用于选择日期的控件,它允许用户选择年、月和日。DatePickerDialog则是一个包装了DatePicker的对话框,方便用户在不离开当前界面的情况下选择日期。当用户在DatePicker上做出改变时,可以通过设置...

    android日期选择DatePickerDialogDemo

    `DatePickerDialog`是Android系统提供的一个对话框,它包含一个`DatePicker`,用户可以通过滚动年、月和日来选择日期。以下是一些关键知识点: 1. **创建DatePickerDialog** 要显示`DatePickerDialog`,首先需要...

    android 日期时间选择对话框简单实例

    DatePickerDialog允许用户选择年、月和日。创建DatePickerDialog的步骤如下: 1. 创建一个DatePickerDialog对象,通常在需要弹出日期选择对话框的地方调用。需要传入三个参数:当前日期(年、月、日)、一个...

    android日期选择器.rar

    - 可以设置OnDateSetListener,当用户选择日期后,onDateSet方法会被调用,提供选定的年、月和日。 - 通过`setCalendarViewShown(false)`可以隐藏内置的日历视图,只显示数字轮盘。 2. **TimePickerDialog**: -...

    android自定义年月日,自定义年月日时分

    `DatePicker`允许用户选择年、月和日,而`TimePicker`则用于选择小时和分钟。这两个控件可以与`DialogFragment`结合使用,以弹出窗口的形式呈现给用户。 创建`DatePickerDialog`: ```java DatePickerDialog ...

    DatePicker和TimePicker小例子

    `DatePicker`控件允许用户选择一个日期,由年、月和日组成。在Android中,`DatePicker`通常通过`DatePickerDialog`呈现为一个对话框,提供了一个友好的用户交互界面。使用`DatePicker`的基本步骤如下: 1. **添加...

    ch07 Android 日期与时间对话框

    1. **DatePickerDialog**: 这个组件提供了一个界面,用户可以从中选择年、月和日。你可以通过以下步骤创建一个`DatePickerDialog`: - 创建一个`DatePickerDialog.OnDateSetListener`接口的实现,这个接口定义了当...

    android 日期 时间 选择控件

    `DatePicker`允许用户选择年、月和日,而`TimePicker`则让用户选择小时和分钟。在`SHOW_DATAPICK`和`SHOW_TIMEPICK`的上下文中,可能是指自定义显示日期和时间选择器的逻辑或者活动(Activity)。 `DatePicker`控件...

    时间选择器-dialog实现

    DatePicker允许用户选择年、月和日,它提供了滚动条样式,用户可以通过滚动来选择不同的日期。在XML布局文件中,可以使用`&lt;DatePicker&gt;`标签来添加这个组件。例如: ```xml android:id="@+id/datePicker" ...

    时间选择器

    它包括年、月和日的三个独立滚动视图。通过实例化`DatePickerDialog`并设置回调监听器,我们可以监听用户的日期选择,并在选择完成后执行相应的操作。例如,以下代码展示了如何创建一个简单的`DatePickerDialog`: ...

    Android时间对话框使用方法详解

    DatePickerDialog是Android系统中的一种日期对话框控件,用于显示年、月和日信息。其使用方法与TimePickerDialog几乎相同。 首先,创建一个DatePickerDialog对象: ```java DatePickerDialog dateDialog = new ...

    Android中的DatePicker和TimePicker控件使用

    `DatePicker`控件允许用户选择一个日期,包括年、月和日。它提供了三种显示模式:对话框模式、小部件模式和日期选择器模式。在布局文件中,你可以通过以下方式添加`DatePicker`: ```xml android:id="@+id/date_...

    Android学习笔记17:中级视图组件DatePicker和TimePicker

    DatePicker组件允许用户选取日期,通常由年、月和日三个部分组成。它提供了三种显示模式:对话框模式、小部件模式和自定义模式。在使用DatePicker时,开发者需要设置初始日期,并可以通过监听器监听日期的变化,以便...

    安卓时间-日期选择器.

    `DatePicker`允许用户选择年、月和日,而`TimePicker`则允许用户选择小时和分钟。在XML布局文件中,我们可以这样定义它们: ```xml android:id="@+id/date_picker" android:layout_width="wrap_content" ...

    通过datepicker选择你想选的任何时间,并放到控件中

    在Android中,DatePickerDialog有一个`OnDateSetListener`接口,我们需要实现`onDateSet`方法,当用户确定日期后,这个方法会被调用,提供所选的年、月和日。开发者可以使用这些值创建一个Calendar对象,然后将其...

Global site tag (gtag.js) - Google Analytics