Android : DatePicker 下拉菜单像 Spinner
Android : DatePicker dropdown like Spinner
我的设计师想要显示一个看起来像下拉列表的 DatePicker
:
使用 Spinner
来实现是个好主意吗?我是否必须编写自己的逻辑来处理哪些月份、闰年等有多少天?
或者是否有任何方法可以自定义 Android DatePicker
或任何其他小部件来实现此功能,其中我不必为处理日期编写逻辑?
完全推荐这种做法吗?
如果你想要spinner风格的日期选择器,你可以将DatePicker的datePickerMode属性设置为spinner。
<DatePicker
...
android:datePickerMode="spinner" />
看看这个图书馆:https://github.com/code-troopers/android-betterpickers。
Gradle:
compile 'com.code-troopers.betterpickers:library:3.1.0'
在你的 Activity;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerBuilder dpb = new DatePickerBuilder()
.setFragmentManager(getSupportFragmentManager())
.setStyleResId(R.style.BetterPickersDialogFragment)
.setYearOptional(true);
dpb.show();
}
});
您可以在Programmer中设置样式。
etDOB.setOnClickListener(v -> {
DatePickerDialog dialog = new DatePickerDialog(this, android.R.style.Theme_Holo_Dialog, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.show();
});
我的设计师想要显示一个看起来像下拉列表的 DatePicker
:
使用 Spinner
来实现是个好主意吗?我是否必须编写自己的逻辑来处理哪些月份、闰年等有多少天?
或者是否有任何方法可以自定义 Android DatePicker
或任何其他小部件来实现此功能,其中我不必为处理日期编写逻辑?
完全推荐这种做法吗?
如果你想要spinner风格的日期选择器,你可以将DatePicker的datePickerMode属性设置为spinner。
<DatePicker
...
android:datePickerMode="spinner" />
看看这个图书馆:https://github.com/code-troopers/android-betterpickers。
Gradle:
compile 'com.code-troopers.betterpickers:library:3.1.0'
在你的 Activity;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerBuilder dpb = new DatePickerBuilder()
.setFragmentManager(getSupportFragmentManager())
.setStyleResId(R.style.BetterPickersDialogFragment)
.setYearOptional(true);
dpb.show();
}
});
您可以在Programmer中设置样式。
etDOB.setOnClickListener(v -> {
DatePickerDialog dialog = new DatePickerDialog(this, android.R.style.Theme_Holo_Dialog, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.show();
});