如何只用月份和年份字段显示android的日期选择器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何只用月份和年份字段显示android的日期选择器?相关的知识,希望对你有一定的参考价值。

我想禁用android sdk日期选择器上的日期选择选项。任何简单的xml配置都是最好的

答案

我刚刚发布了一个新的日期选择器框架,允许您创建自定义日期选择器。我还提供了一些示例日期选择器,例如您正在寻找的日期选择器。希望,它对你有用。

代码可以在这里找到:https://github.com/bendemboski/DateSlider

更新06/2014:这个图书馆是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);

以上是关于如何只用月份和年份字段显示android的日期选择器?的主要内容,如果未能解决你的问题,请参考以下文章

android有月份选择器吗?或者怎么让日期选择器的日期不显示,只显示年份和月份

如何仅在月份、日期和年份中更改我的日期选择器显示

在firebird选择过程中显示给定月份和年份中的所有日期

EXTJS 5 - 仅日期选择器年份和月份

Bootstrap 日期选择器显示月份和年份菜单

如何将 jQuery 日期选择器转换为仅选择月份和年份?