我试图从日期选择器小部件中隐藏年份字段。这可能看起来像一个重复的问题,但之前问题给出的答案并不能帮助我隐藏年份字段。
这是我的代码::
@Override
protected void onCreate(Bundle savedInstanceState) {
int month = 0;
int year = 0;
int day = 0;
OnDateSetListener datePickerListener = null;
CustomDatePickerDialog dp = new CustomDatePickerDialog(getBaseContext(), android.R.style.Theme_Holo_Light_Dialog, datePickerListener, year, month, day);
DatePickerDialog obj = dp.getPicker();
picker = (DatePicker) findViewById(R.id.datePicker1);
try {
java.lang.reflect.Field[] f = obj.getClass().getDeclaredFields();
// Field f[] = picker.getClass().getDeclaredFields();
for (java.lang.reflect.Field field : f) {
if (field.getName().equals("prabs")) {
field.setAccessible(true);
DatePicker datePicker = (DatePicker) field.get(obj);
java.lang.reflect.Field datePickerFields[] = obj.getClass().getDeclaredFields();
for (java.lang.reflect.Field datePickerField : datePickerFields) {
if ("mYearPicker".equals(datePickerField.getName()) || "mYearSpinner".equals(datePickerField
.getName()))
{
datePickerField.setAccessible(true);
Object yearPicker = new Object();
yearPicker = datePickerField.get(datePicker);
((View) yearPicker).setVisibility(View.GONE);
}
}
/* Object yearPicker = new Object();
yearPicker = field.get(picker);
((View) yearPicker).setVisibility(View.GONE);*/
}
}
}
catch (SecurityException e) {
Log.d("ERROR", e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d("ERROR", e.getMessage());
}
catch (IllegalAccessException e) {
Log.d("ERROR", e.getMessage());
}
obj.show();
}
主类之外::
class CustomDatePickerDialog extends DatePickerDialog implements OnDateChangedListener
{
private DatePickerDialog prabs;
@SuppressLint("NewApi")
public CustomDatePickerDialog(Context context, int theme,
OnDateSetListener listener, int year, int monthOfYear,
int dayOfMonth)
{
super(context, theme, listener, year, monthOfYear, dayOfMonth);
// TODO Auto-generated constructor stub
prabs = new DatePickerDialog(context, theme, listener, year, monthOfYear, dayOfMonth);
prabs.getDatePicker().init(2015, 01, 8, this);
updateTitle(monthOfYear,dayOfMonth);
}
private void updateTitle(int Month, int Day)
{
// TODO Auto-generated method stub
Calendar mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.MONTH, Month);
mCalendar.set(Calendar.DAY_OF_MONTH, Day);
prabs.setTitle(getFormat().format(mCalendar.getTime()));
}
public SimpleDateFormat getFormat() {
// TODO Auto-generated method stub
return new SimpleDateFormat("MMM, dd");
}
public void onDateChanged(DatePicker view,int year, int month,int day)
{
updateTitle(month,day);
}
public DatePickerDialog getPicker()
{
return this.prabs;
}
}
添加之前obj.show();
它显示带有日历的整个小部件,但我只想要带有日期和月份的小部件
尝试解决这个问题已经很多天了。但每次都失败:(
任何建议都会有很大帮助。
谢谢..
EDIT::
年份字段表示日期选择器小部件的 Eclipse 年份字段
我提到如何仅在Android的日期选择器中显示年份 https://stackoverflow.com/questions/10793811/how-to-display-year-only-in-date-picker-in-android and 自定义日期选择器对话框 https://stackoverflow.com/questions/18249608/custom-date-picker-dialog
错误日志::
01-09 11:26:20.780: E/AndroidRuntime(23840): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application this is a crash report