如何只在日期选取器在安卓显示年 [英] How to display year only in date picker in android

查看:122
本文介绍了如何只在日期选取器在安卓显示年的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

谁能告诉如何只在日期选取器在Android中显示年

Can anybody tell how to display year only in date picker in android

感谢

推荐答案

您也可以使用一些简单的反射来隐藏日期和月份 NumberPicker S的的DatePicker 小部件。请注意,这可能会停止工作,如果谷歌决定重新命名的成员字段名。此外,使用 Android的时候,当然这种做法是有道理的:datePickerMode =微调

You could also use some simple reflection to hide the day and month NumberPickers of a DatePicker widget. Do note that this may stop working if Google decides to rename the member field names. Also, this approach of course makes sense when using android:datePickerMode="spinner".

// inflate DatePicker, or e.g. get it from a DatePickerDialog:
DatePicker datepicker = ...

// pre-Honeycomb fields: 
findAndHideField(datepicker, "mDayPicker");
findAndHideField(datepicker, "mMonthPicker");

// Honeycomb(+) fields:
findAndHideField(datepicker, "mDaySpinner");
findAndHideField(datepicker, "mMonthSpinner");

// Lollipop(+) fields (wrapped in a delegate):
final Object mDatePickerDelegate = findFieldInstance(picker, "mDelegate");
findAndHideField(mDatePickerDelegate, "mDaySpinner");
findAndHideField(mDatePickerDelegate, "mMonthSpinner");


/** find a member field by given name and hide it */
private static void findAndHideField(Object object, String name) {
    try {
        final Field field = object.getClass().getDeclaredField(name);
        field.setAccessible(true);
        final View fieldInstance = (View) field.get(object);
        fieldInstance.setVisibility(View.GONE);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/* find a member field by given name and return its instance value */
private static Object findFieldInstance(DatePicker datepicker, String name) {
    try {
        final Field field = DatePicker.class.getDeclaredField(name);
        field.setAccessible(true);
        return field.get(datepicker);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}


更新:新增code,说明如何使这种方法的工作与Android棒棒堂5.0(API 21 +)


Update: Added code illustrating how to make this approach work with Android 'Lollipop' 5.0 (API 21+).

免责声明:我不能强调不够,这是可能会停止与任何框架的更新工作(因为它没有当的Andr​​oid 3.0中首次引入,并再次与Android 5.0)哈克的解决方案。

Disclaimer: I cannot stress enough that this is hacky solution that may stop working with any framework update (as it did when Android 3.0 was first introduced, and again with Android 5.0).

这篇关于如何只在日期选取器在安卓显示年的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆