显示带或不带年份字段的DatePicker

时间:2010-05-10 15:11:04

标签: android datepicker

根据复选框,我想显示DatePicker年份字段可见或不可见。

但是我没有找到任何方法来实现它。

请问好吗?

提前致谢。

6 个答案:

答案 0 :(得分:2)

查看DateSlider,这是DatePicker的一个很好的,可自定义的替代方案。

答案 1 :(得分:2)

将复选框侦听器设置为您需要查看复选框

if(id == R.id.event_checkBox_year)
    {
        if(ch.isChecked())
        {
            visiblity = View.GONE;
        }
        else
        {
            visiblity = View.VISIBLE;
        }
        showHideYear(visiblity);
    }

 private void showHideYear(int visiblity)
 {
     try {
            Field f[] = date.getClass().getDeclaredFields();
            for (Field field : f) {
                if (field.getName().equals("mYearSpinner") ||field.getName().equals("mYearPicker") ) 
                {
                    field.setAccessible(true);
                    Object yearPicker = new Object();
                    yearPicker = field.get(date);
                    ((View) yearPicker).setVisibility(visiblity);
                }
            }
        } 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 :(得分:1)

由于无法从DatePicker中删除年份字段,因此我最终决定添加CheckBox“忽略年份字段”以实施解决方案。

答案 3 :(得分:0)

以下是未在日期选择器对话框中显示年份微调器或年份选择器的解决方案

try {

       Field f[] = datePickerDialog.getClass().getDeclaredFields();
        for (Field field : f) {
            if (field.getName().equals("mDatePicker")) {
                field.setAccessible(true);
                Object datePicker=new Object();
                datePicker=field.get(datePickerDialog);
                Field[] fields=datePicker.getClass().getDeclaredFields();
                for(Field field1:fields){
                    if(field1.getName().equals("mYearSpinner") || field1.getName().equals("mYearPicker")){
                        field1.setAccessible(true);
                        Object ye=field1.get(datePicker);
                        ((View)ye).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());
    }

答案 4 :(得分:0)

一个班轮:

getDatePicker().findViewById(Resources.getSystem().getIdentifier("year", "id", "android")).setVisibility(View.GONE);

答案 5 :(得分:-1)

我认为Any+Time™ DatePicker/TimePicker AJAX Calendar Widget可能适合您。它有能力选择使用哪些字段,一位朋友告诉我它在Android手机上运行良好。只需测试是否选中该复选框,然后相应地创建具有格式字符串的选择器,该格式字符串包含或不包含年份说明符。