需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但DatePickerDialog并没有直接提供方法来操作,这里分享一个笨办法:)
效果图:
默认
处理后
代码片段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子控件,这里通过遍历的办法来查找这个控件。
使用代码
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 + "日");
}
}
分享到:
相关推荐
NULL 博文链接:https://zigtang.iteye.com/blog/1752018
Android当中DatePickerDialog的使用
自定义DatePickerDialog的实现
DatePickerDialog日期的使用
需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但DatePickerDialog并没有直接提供方法来操作,这里分享一个笨办法:)
android DatePickerDialog 实例
对于DatePicker的时间控件做出部分控制,记录下来,供以后快速使用。
DatePickerDialog - iOS的日期选择器对话框
自定义的DatePickerDialog,实现DatePicker样式的自定义,Dialog的自定义
NULL 博文链接:https://gundumw100.iteye.com/blog/2220784
new DatePickerDialog(this, AlertDialog.THEME_HOLO_LIGHT,null).show(); 效果: 4.0以上的版本才可使用此Theme,注意对版本的判断。 若低版本的则主题设置为以下 android:theme=”@android:style/Theme....
而且很多的时候都不需要显示“年”,下面看通过指定主题来显示自己想要的样式,并且通过反射机制来隐藏“年”,而且可以举一反三,对这上面的东西做任务的修改。 private void showDatePickerDialog() { Calendar...
datepickerdialog禁止自动弹出键盘
日期选择控件,跟IOS上的年月日控件效果一样的,稍加改造,就可成为自己想要的效果。非常实用的,反正我是用到项目中了。
Android例子源码漂亮的自定义日期选择控件DatePickerDialog
et.setText("您选择了:" year "年" month "月" dayOfMonth "日"); } }, c.get(Calendar.YEAR),//传入年份 c.get(Calendar.MONTH), //传入月份 c.get(Calendar.DAY_OF_MONTH) //传入天数 case ...
DatePickerDialog是iOS的一个嵌入式类,在UIAlertView中显示UIDatePicker。 要求 DatePickerDialog可在iOS 7、8和9、10、11、12、13和14上运行。它取决于以下Apple框架,大多数Xcode模板应已包含以下框架: 基础 ...
日期选择DatePickerDialog取值,自定义的,最好自己创建个项目,把代码考进去,不然gradle下载的麻烦,