che*_*ist 8 android datepicker
我正在寻找一种方法来自定义Android中的日期选择器,只显示日期和月份(即没有年份).
我正在创建一个基于如何显示android的日期选择器的对话框,只有月份和年份字段?:
Dialog dlg = new DatePickerDialog(context, datePickerListener, dueDateCalendar.get(Calendar.YEAR), dueDateCalendar.get(Calendar.MONTH), dueDateCalendar.get(Calendar.DAY_OF_MONTH));
try {
Field f[] = dlg.getClass().getDeclaredFields();
for (Field field : f) {
String name = field.getName();
if (name.equals("YEAR")){
field.setAccessible(true);
Object dayPicker = new Object();
dayPicker = field.get(dlg);
((View) dayPicker).setVisibility(View.GONE);
}
}
} catch (Exception e){
// TODO: should not happen
e.printStackTrace();
}
return dlg;
Run Code Online (Sandbox Code Playgroud)
但我一直在((查看)dayPicker).setVisibility(View.GONE)上获得Cast异常;
java.lang.ClassCastException:java.lang.String无法强制转换为android.view.View
有任何想法吗?
Sim*_*mon 18
在这里一试.它的APIv11 +但是在较低的API版本上还有其他方法.
DatePickerDialog dlg = new DatePickerDialog(context, datePickerListener,
dueDateCalendar.get(Calendar.YEAR),
dueDateCalendar.get(Calendar.MONTH),
dueDateCalendar.get(Calendar.DAY_OF_MONTH));
int year = context.getResources().getIdentifier("android:id/year", null, null);
if(year != 0){
View yearPicker = dlg.getDatePicker().findViewById(year);
if(yearPicker != null){
yearPicker.setVisibility(View.GONE);
}
}
return dlg;
Run Code Online (Sandbox Code Playgroud)
更新的代码:这应该可以胜任.
DatePickerDialog dlg = new DatePickerDialog(context, datePickerListener,
dueDateCalendar.get(Calendar.YEAR),
dueDateCalendar.get(Calendar.MONTH),
dueDateCalendar.get(Calendar.DAY_OF_MONTH))
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
int year = getContext().getResources()
.getIdentifier("android:id/year", null, null);
if(year != 0){
View yearPicker = findViewById(year);
if(yearPicker != null){
yearPicker.setVisibility(View.GONE);
}
}
}
};
return dlg;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16520 次 |
| 最近记录: |