【发布时间】:2011-05-06 14:15:46
【问题描述】:
我想禁用 android sdk 日期选择器上的日期选择选项。任何简单的 xml 配置都是最好的
【问题讨论】:
-
你有没有尝试过?您是否使用搜索引擎搜索过解决方案?
-
我确实做到了,发现人们说这是不可能的,这不是真的,但我对如何推进这一点并没有明确的想法,但它是可能的。谢谢
标签: android sdk datepicker
我想禁用 android sdk 日期选择器上的日期选择选项。任何简单的 xml 配置都是最好的
【问题讨论】:
标签: android sdk datepicker
我刚刚发布了一个新的日期选择器框架,它允许您创建自定义日期选择器。我还提供了一些示例日期选择器,例如您正在寻找的日期选择器。希望它对你有用。
代码可以在这里找到:https://github.com/bendemboski/DateSlider
2014 年 6 月更新: 这个库是 2010 年开发的,自 2011 年以来一直无人维护。所以它现在很可能已经过时了。
【讨论】:
可以使用反射破解 DatePicker 实例。这样,您就可以访问代表 DatePicker 中日期的 NumberPicker 实例:
datePicker = (DatePicker) findViewById(R.id.expiration_date);
try {
Field f[] = datePicker.getClass().getDeclaredFields();
for (Field field : f) {
if (field.getName().equals("mDayPicker")) {
field.setAccessible(true);
Object dayPicker = new Object();
dayPicker = field.get(datePicker);
((View) dayPicker).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());
}
【讨论】:
说到反射,这适用于 Android 4.4.2 SDK
"mDaySpinner"
改为
"mDayPicker"
【讨论】:
我认为这是最好的解决方案
datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
【讨论】:
编辑:根据下面的评论,我不会再关注这个答案了。
我认为您不能使用默认日期选择器来做到这一点。您必须使用基本的 Android UI 元素来创建它。但是,与其去那个麻烦,不如使用更好的库元素,比如这个漂亮的 iPhone 式轮子:http://code.google.com/p/android-wheel/我还没有使用它,但我打算!
【讨论】:
这在 2.2 版本中运行良好。但是对话框的标题没有改变。
for (Field datePickerDialogField : datePickerDialogFields) {
if (datePickerDialogField.getName().equals("mDatePicker")) {
datePickerDialogField.setAccessible(true);
DatePicker datePicker = (DatePicker) datePickerDialogField.get(datePickerDialog);
Field datePickerFields[] = datePickerDialogField.getType().getDeclaredFields();
for (Field datePickerField : datePickerFields) {
if ("mDayPicker".equals(datePickerField.getName())) {
datePickerField.setAccessible(true);
Object dayPicker = new Object();
dayPicker = datePickerField.get(datePicker);
((View) dayPicker).setVisibility(View.GONE);
}
}
}
}
【讨论】:
您可以使用 https://github.com/SimonVT/android-datepicker 小部件来实现向后移植的兼容性,并使日期选择器“消失”
<net.simonvt.numberpicker.NumberPicker
android:id="@+id/day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dip"
android:layout_marginRight="16dip"
android:focusable="true"
android:focusableInTouchMode="true"
android:visibility="gone"
/>
【讨论】:
隐藏日:
datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
&
隐藏月份:
datePicker.findViewById(Resources.getSystem().getIdentifier("month", "id", "android")).setVisibility(View.GONE);
【讨论】: