前言
需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但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 + "日");
}
}
分享到:
相关推荐
在DatePickerDialog中,我们可能需要三个WheelView,分别用于年、月和日的选择。 要创建基于WheelView的DatePickerDialog,我们需要以下步骤: 1. **设计布局**:首先,为Dialog创建一个XML布局文件,包含三个...
需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但DatePickerDialog并没有直接提供方法来操作,这里分享一个笨办法:)
`onDateSet`方法会在用户在DatePickerDialog中选择日期后被调用,`year`、`monthOfYear`和`dayOfMonth`分别代表选择的年、月和日。这里我们格式化日期字符串并将其显示在`tv_data`这个TextView上。 4. **样式和...
`DatePicker`控件用于选择日期,它由三个`NumberPicker`组成,分别表示年、月和日。由于`DatePicker`内部使用了`NumberPicker`,所以我们可以通过类似的方式来改变它的分割线颜色。代码如下: ```java public ...
`DatePickerDialog`则用于让用户选择日期,包括年、月和日。创建一个`DatePickerDialog`的流程如下: 1. **创建实例**: 使用`DatePickerDialog`的构造函数,传入上下文、初始日期、监听器。 ```java ...
DatePicker是一个用于选择日期的控件,它允许用户选择年、月和日。DatePickerDialog则是一个包装了DatePicker的对话框,方便用户在不离开当前界面的情况下选择日期。当用户在DatePicker上做出改变时,可以通过设置...
`DatePickerDialog`是Android系统提供的一个对话框,它包含一个`DatePicker`,用户可以通过滚动年、月和日来选择日期。以下是一些关键知识点: 1. **创建DatePickerDialog** 要显示`DatePickerDialog`,首先需要...
DatePickerDialog允许用户选择年、月和日。创建DatePickerDialog的步骤如下: 1. 创建一个DatePickerDialog对象,通常在需要弹出日期选择对话框的地方调用。需要传入三个参数:当前日期(年、月、日)、一个...
- 可以设置OnDateSetListener,当用户选择日期后,onDateSet方法会被调用,提供选定的年、月和日。 - 通过`setCalendarViewShown(false)`可以隐藏内置的日历视图,只显示数字轮盘。 2. **TimePickerDialog**: -...
`DatePicker`允许用户选择年、月和日,而`TimePicker`则用于选择小时和分钟。这两个控件可以与`DialogFragment`结合使用,以弹出窗口的形式呈现给用户。 创建`DatePickerDialog`: ```java DatePickerDialog ...
`DatePicker`控件允许用户选择一个日期,由年、月和日组成。在Android中,`DatePicker`通常通过`DatePickerDialog`呈现为一个对话框,提供了一个友好的用户交互界面。使用`DatePicker`的基本步骤如下: 1. **添加...
1. **DatePickerDialog**: 这个组件提供了一个界面,用户可以从中选择年、月和日。你可以通过以下步骤创建一个`DatePickerDialog`: - 创建一个`DatePickerDialog.OnDateSetListener`接口的实现,这个接口定义了当...
`DatePicker`允许用户选择年、月和日,而`TimePicker`则让用户选择小时和分钟。在`SHOW_DATAPICK`和`SHOW_TIMEPICK`的上下文中,可能是指自定义显示日期和时间选择器的逻辑或者活动(Activity)。 `DatePicker`控件...
DatePicker允许用户选择年、月和日,它提供了滚动条样式,用户可以通过滚动来选择不同的日期。在XML布局文件中,可以使用`<DatePicker>`标签来添加这个组件。例如: ```xml android:id="@+id/datePicker" ...
它包括年、月和日的三个独立滚动视图。通过实例化`DatePickerDialog`并设置回调监听器,我们可以监听用户的日期选择,并在选择完成后执行相应的操作。例如,以下代码展示了如何创建一个简单的`DatePickerDialog`: ...
DatePickerDialog是Android系统中的一种日期对话框控件,用于显示年、月和日信息。其使用方法与TimePickerDialog几乎相同。 首先,创建一个DatePickerDialog对象: ```java DatePickerDialog dateDialog = new ...
`DatePicker`控件允许用户选择一个日期,包括年、月和日。它提供了三种显示模式:对话框模式、小部件模式和日期选择器模式。在布局文件中,你可以通过以下方式添加`DatePicker`: ```xml android:id="@+id/date_...
DatePicker组件允许用户选取日期,通常由年、月和日三个部分组成。它提供了三种显示模式:对话框模式、小部件模式和自定义模式。在使用DatePicker时,开发者需要设置初始日期,并可以通过监听器监听日期的变化,以便...
`DatePicker`允许用户选择年、月和日,而`TimePicker`则允许用户选择小时和分钟。在XML布局文件中,我们可以这样定义它们: ```xml android:id="@+id/date_picker" android:layout_width="wrap_content" ...
在Android中,DatePickerDialog有一个`OnDateSetListener`接口,我们需要实现`onDateSet`方法,当用户确定日期后,这个方法会被调用,提供所选的年、月和日。开发者可以使用这些值创建一个Calendar对象,然后将其...