Android 在DatePickerDialog中以数字格式而不是字母格式显示月份字段
下面的图片显示了我在android应用程序中的当前日期选择器,但是我想将所有月份显示为01、02、03…12,而不是1月、2月、3月。。。十二月 任何帮助都将不胜感激Android 在DatePickerDialog中以数字格式而不是字母格式显示月份字段,android,datepicker,Android,Datepicker,下面的图片显示了我在android应用程序中的当前日期选择器,但是我想将所有月份显示为01、02、03…12,而不是1月、2月、3月。。。十二月 任何帮助都将不胜感激 您可以使用数字选择器来实现这一点: 1)创建字符串数组: String mValues[] = { "01","02","03","04","05","06","07","08","09","10","11","12"}; private void setNubmerPicker(NumberPicker nubmerPicke
您可以使用数字选择器来实现这一点: 1)创建字符串数组:
String mValues[] = { "01","02","03","04","05","06","07","08","09","10","11","12"};
private void setNubmerPicker(NumberPicker nubmerPicker,String [] numbers ){
nubmerPicker.setMaxValue(numbers.length-1);
nubmerPicker.setMinValue(0);
nubmerPicker.setWrapSelectorWheel(true);
nubmerPicker.setDisplayedValues(numbers);
}
2)创建使用自定义值创建数字选择器的方法:
String mValues[] = { "01","02","03","04","05","06","07","08","09","10","11","12"};
private void setNubmerPicker(NumberPicker nubmerPicker,String [] numbers ){
nubmerPicker.setMaxValue(numbers.length-1);
nubmerPicker.setMinValue(0);
nubmerPicker.setWrapSelectorWheel(true);
nubmerPicker.setDisplayedValues(numbers);
}
3)使用自定义值调用数字选择器方法:
String mValues[] = { "01","02","03","04","05","06","07","08","09","10","11","12"};
private void setNubmerPicker(NumberPicker nubmerPicker,String [] numbers ){
nubmerPicker.setMaxValue(numbers.length-1);
nubmerPicker.setMinValue(0);
nubmerPicker.setWrapSelectorWheel(true);
nubmerPicker.setDisplayedValues(numbers);
}
setnumberpicker(yourNumberPicker,mValues)代码>
数字选择器的优点:
- 添加到API级别11中,因此您可以在所有设备上使用它
- 你不需要打开一个对话框,它会让你的应用程序更简单(想象一下,你想下订单,以及打开对话框的每一个小细节),当然,如果你愿意,你每次都可以把你的号码选择器放在对话框中
- 如果你使用我的答案,你可以在你的数据数组中使用Unicode字符(在我的例子中是-mValues),我认为这真的是一个很好的加法,几乎不费吹灰之力
您可以使用NumberPicker
设计自己的对话框
,但如果您仍然想使用DatePickerDialog
,这应该可以:
DatePickerDialog mDatePicker = new DatePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog, new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int selectedyear, int selectedmonth, int selectedday) {
// Stuff
}
}, mYear, mMonth, mDayOfMonth) {
final int month = getContext().getResources().getIdentifier("android:id/month", null, null);
final String[] monthNumbers = new String[]{ "01","02","03","04","05","06","07","08","09","10","11","12"}
@Override
public void onDateChanged(@NonNull DatePicker view, int y, int m, int d) {
super.onDateChanged(view, y, m, d);
// Since DatePickerCalendarDelegate updates the month spinner too, we need to change months as numbers here also
if(month != 0){
NumberPicker monthPicker = findViewById(month);
if(monthPicker != null){
monthPicker.setDisplayedValues(monthNumbers);
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Hide day spinner
int day = getContext().getResources().getIdentifier("android:id/day", null, null);
if(day != 0){
NumberPicker dayPicker = findViewById(day);
if(dayPicker != null){
dayPicker.setVisibility(View.GONE);
}
}
// Show months as Numbers
if(month != 0){
NumberPicker monthPicker = findViewById(month);
if(monthPicker != null){
monthPicker.setDisplayedValues(monthNumbers);
}
}
}
};
mDatePicker.setTitle("Select Date");
mDatePicker.show();
我使用了@Dispew answer,但我将monthPicker设置为null,因此我更改了此选项:
final int month = getContext().getResources().getIdentifier("android:id/month", null, null);
// Show months as Numbers
if(month != 0){
NumberPicker monthPicker = findViewById(month);
if(monthPicker != null){
monthPicker.setDisplayedValues(monthNumbers);
}
}
为此:
NumberPicker monthPicker = mDatePicker.findViewById((Resources.getSystem().getIdentifier("month", "id", "android")));
if (monthPicker != null){
monthPicker.setDisplayedValues(monthNumbers);
}
尝试使用以下方法: