需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但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 + "日");
}
}
分享到:
相关推荐
标题中的“DatePickerDialog隐藏年月日”指的是在Android开发中,如何自定义DatePickerDialog以便仅显示日期选择器中的日部分,而隐藏年和月的选择。这通常涉及到对Android原生的DatePicker及其对话框的定制。 在...
在Android开发中,`DatePicker`是用于让用户选择日期的一个组件,通常显示年、月、日三个部分。然而,根据你的需求,你希望`DatePicker`仅显示年份和月份,而不包含日期部分。这个功能可以用来让用户选择特定的年份...
DatePickerDialog是Android系统提供的一个用于选择日期的对话框,它包含了年、月、日三个部分。默认情况下,用户可以通过滚轮选择相应的值。为了自定义这个控件,我们需要了解以下关键知识点: 1. **自定义布局**: ...
而且很多的时候都不需要显示“年”,下面看通过指定主题来显示自己想要的样式,并且通过反射机制来隐藏“年”,而且可以举一反三,对这上面的东西做任务的修改。 private void showDatePickerDialog() { Calendar...
- 通过`setCalendarViewShown(false)`可以隐藏内置的日历视图,只显示数字轮盘。 2. **TimePickerDialog**: - TimePickerDialog同样需要设置初始时间和是否显示24小时制。监听器为OnTimeSetListener,用户选择...
我在开发中在DatePickerDialog的基础上做了修改,实现了这种Dialog。效果如下: 具体实现方法为: 先新建一个安卓项目DoubleDatePicker,在res/layout文件夹下新建date_picker_dialog.xml,内容如下: <?xml ...
它通常包含年、月、日三个部分,用户可以通过滚动条选择特定的日期。要在布局文件中添加`DatePicker`,可以使用以下XML代码: ```xml android:id="@+id/date_picker" android:layout_width="wrap_content" ...
在这个特定的场景中,我们讨论的是一个自定义的日期选择器弹框,它允许用户选取年、月、日以及时间(小时和分钟)。下面我们将深入探讨如何实现这样的功能。 首先,我们需要创建一个自定义 DialogFragment,它是...
在Android开发中,Dialog是一种非常重要的用户界面组件,它用于在主应用程序界面之上显示临时性的信息或者进行交互操作。这个“Android dialog 大合集源码”提供了多种对话框的实现,涵盖了Android编程中可能遇到的...
在Android开发中,Dialog对话框是一种重要的用户交互组件,它用于在主应用程序界面之上显示临时的通知或提示,以便用户能够做出决策或输入信息。"所有Dialog对话框.zip"可能包含了一系列关于Android Dialog使用的...
3. 对话框显示与隐藏:调用show()和dismiss()方法来控制对话框的显示和关闭。 4. 回调事件处理:BaseDialog可能包含了点击按钮或其他操作的回调接口,子类可以通过重写这些接口实现自己的业务逻辑。 5. 动画效果:...
4. 对话框的生命周期:对话框的显示与隐藏可以通过show()和dismiss()方法控制,理解它们与Activity的关系,避免内存泄漏。 5. 处理对话框的点击事件:通过设置按钮的OnClickListener,可以响应用户的操作。 6. ...
例如,显示警告信息或询问用户是否保存未保存的更改。 2. **ProgressDialog**(已废弃,建议使用Progress Bar):在执行耗时操作时显示一个进度条,给用户反馈操作的状态。可以是旋转的指示器或者水平的进度条。 3...
5.4、滚动条显示与隐藏 143 5.5、LISTVIEW 与 SCROLLVIEW 解决办法 144 方法一:(重写ListView) 144 方法二: 150 5.6、3D魔方 151 6、ANDROID UI 动画 160 6.1、四种2D动画 160 6.1.1、透明度控制动画效果 alpha ...