在Android日历视图中首先显示年份select

棒棒糖后,DatePicker有一个非常漂亮的日历selectdate。 但问题是select年份。 大部分老百姓都面临着挑选年份的困扰。 他们只是滚动。 滚动更换年份需要很长的时间。 所以我需要显示年select第一次打开Datepicker对话框在Android中。

Datepicker通常打开如下:

在这里输入图像说明

但是应该从一年的select开始。 像下面一样:

在这里输入图像说明

Solutions Collecting From Web of "在Android日历视图中首先显示年份select"

你可以得到年份视图的参考,然后模拟用户点击打开它。

dataPicker.getTouchables().get( 0 ).performClick(); 

更新:如果不清楚,我会解释每一步。 你需要先有datePicker引用。 使用datePicker引用,您可以使用getTouchables()方法获取datePicker组件。 组件年是在第一个地方,所以需要调用.get(0)来获得一年的参考。 之后,只需模拟用户点击开始在开始年视图,而不是等待用户点击它。

有没有非常可靠的方法来做到这一点:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatePicker datePicker = (DatePicker) findViewById(R.id.test); openYearView(datePicker); } private void openYearView(DatePicker datePicker) { try { Field mDelegateField = datePicker.getClass().getDeclaredField("mDelegate"); mDelegateField.setAccessible(true); Object delegate = mDelegateField.get(datePicker); Method setCurrentViewMethod = delegate.getClass().getDeclaredMethod("setCurrentView", int.class); setCurrentViewMethod.setAccessible(true); setCurrentViewMethod.invoke(delegate, 1); } catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { } }