Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为android显示只有月份和年份字段的日期选择器?_Android_Sdk_Datepicker - Fatal编程技术网

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

如何为android显示只有月份和年份字段的日期选择器?,android,sdk,datepicker,Android,Sdk,Datepicker,我想禁用android sdk日期选择器上的日期选择选项。任何简单的xml配置都是最好的编辑:根据下面的评论,我不再遵循这个答案了 我不认为你可以用默认的日期选择器来做这件事。您必须使用基本的Android UI元素创建它。但是与其麻烦,为什么不使用一个更好的库元素,比如这个看起来很漂亮的iPhone样式的轮子:我还没有用过它,但我计划用 编辑:根据下面的评论,我不会再遵循这个答案了 我不认为你可以用默认的日期选择器来做这件事。您必须使用基本的Android UI元素创建它。但是与其麻烦,为什么

我想禁用android sdk日期选择器上的日期选择选项。任何简单的xml配置都是最好的编辑:根据下面的评论,我不再遵循这个答案了


我不认为你可以用默认的日期选择器来做这件事。您必须使用基本的Android UI元素创建它。但是与其麻烦,为什么不使用一个更好的库元素,比如这个看起来很漂亮的iPhone样式的轮子:我还没有用过它,但我计划用

编辑:根据下面的评论,我不会再遵循这个答案了


我不认为你可以用默认的日期选择器来做这件事。您必须使用基本的Android UI元素创建它。但是与其麻烦,为什么不使用一个更好的库元素,比如这个看起来很漂亮的iPhone样式的轮子:我还没有用过它,但我计划用

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

代码可在此处找到:

更新日期2014年6月6日:
该库于2010年开发,自2011年以来一直未维护。所以现在它很可能已经过时了。

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

代码可在此处找到:

更新日期2014年6月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());
}

可以使用反射攻击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());
}

这在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);
            }
        }
    }
}

这在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);
            }
        }
    }
}
您可以使用该小部件实现后端口兼容性,并使日期选择器“消失”

<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"
        />

您可以使用该小部件实现后端口兼容性,并使日选择器“消失”

<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"
        />

说到反射,它在Android 4.4.2 SDK中起作用

"mDaySpinner"
反而

"mDayPicker"

说到反射,它在Android 4.4.2 SDK中起作用

"mDaySpinner"
反而

"mDayPicker"

我认为这是最好的解决办法

  datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);

我认为这是最好的解决办法

  datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
藏匿日:

 datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
&

每月:

datePicker.findViewById(Resources.getSystem().getIdentifier("month", "id", "android")).setVisibility(View.GONE);
藏匿日:

 datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
&

每月:

datePicker.findViewById(Resources.getSystem().getIdentifier("month", "id", "android")).setVisibility(View.GONE);


你试过什么吗?你有没有使用搜索引擎寻找解决方案?事实上,我有,发现有人说这是不可能的,这是不正确的,但我不清楚如何继续,但这是可能的。谢谢你试过什么吗?你有没有使用搜索引擎寻找解决方案?事实上,我有,发现有人说这是不可能的,这是不正确的,但我不清楚如何继续,但这是可能的。感谢定制日期选择器是维护Wordpress页面的乐趣。。。我更新了GitHub repository的链接,它仍然相关吗?你能更新这个项目以支持gradle和android studio吗?它可能不再相关了。该项目是在安卓2.3推出时开发的。从那以后就没有更新过。因此,希望有更好的解决方案。我不再开发android应用程序了,所以我完全脱离了现代实践=/自定义日期选择器是a-w-s-o-m-eOh维护Wordpress页面的乐趣。。。我更新了GitHub repository的链接,它仍然相关吗?你能更新这个项目以支持gradle和android studio吗?它可能不再相关了。该项目是在安卓2.3推出时开发的。从那以后就没有更新过。因此,希望有更好的解决方案。我不再开发android应用程序了,所以我完全脱离了现代实践=/在2011年1月,这是一个不错的建议,但如果你现在正在阅读,我建议不要使用模仿iOS的库。谷歌不喜欢这样:用户也不喜欢这样。2011年1月,这是一个不错的建议,但如果你现在正在阅读,我建议不要使用模仿iOS的库。谷歌不喜欢这样:用户也不喜欢这样。这对我来说很有效。请注意,我必须将mDayPicker更改为mDaySpinner。我不确定是哪个API级别引入了这一变化,但我现在正在为android 4.0.3构建。这可能在android 5.0及更高版本中被打破,因为DatePicker不再使用这些数字选择器了!在安卓6上,字段是mDelegate、LOG_标记、MODE_日历、MODE_微调器。这个解决方案对我不起作用,这对我起作用了。请注意,我必须将mDayPicker更改为mDaySpinner。我不确定是哪个API级别引入了这一变化,但我现在正在为android 4.0.3构建。这可能在android 5.0及更高版本中被打破,因为DatePicker不再使用这些数字选择器了!在安卓6上,字段是mDelegate、LOG_标记、MODE_日历、MODE_微调器。这个解决方案对我不起作用。