kir*_*882 14 android datepicker
我正在使用一个基本的DatePicker,我正在试图弄清楚如何在DatePickerDialog上隐藏Year字段,以便只显示Month和Day.我不介意今年的基础代码仍然存在,我只想在对话框中隐藏年份字段.你知道的事情如下:
((View) myYear).setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用,因为myYear是一个int而不是一个视图,但是沿着这些方向.可能吗?
kir*_*882 22
我发现实现DatePicker的一种非常简单的方法是在xml中调用它:
<DatePicker
android:id="@+id/thePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)
然后在java中隐藏你想要的任何字段(在本例中为年份):
picker = (DatePicker) findViewById(R.id.thePicker);
try {
Field f[] = picker.getClass().getDeclaredFields();
for (Field field : f) {
if (field.getName().equals("mYearPicker")) {
field.setAccessible(true);
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());
}
Run Code Online (Sandbox Code Playgroud)
要非常小心这个解决方案.您正在使用反射来访问字段并更改可见性.这不适用于Android 5.0!Google已经更改了TimePicker和DatePicker的实现,并且这些类不再公开来自委托的任何字段appart.
我不知道Android 5.0 +的解决方案.我会尽快通知你发现一些有趣的东西.
作为一个想法,您可以使用Build.VERSION.SDK_INT检查Android版本,然后尝试使用反射访问DatePickerSpinnerDelegate并设置所需的字段.
同样,这不是理想的解决方案,因为谷歌可以一次又一次地自由改变......
| 归档时间: |
|
| 查看次数: |
19215 次 |
| 最近记录: |