代码之家  ›  专栏  ›  技术社区  ›  tbruyelle

显示包含或不包含年份字段的日期选取器

  •  5
  • tbruyelle  · 技术社区  · 14 年前

    我想展示一个 DatePicker 根据复选框,年字段是否可见。

    但是我没有发现任何东西能给我一种实现它的方法。

    有什么想法吗?

    事先谢谢。

    6 回复  |  直到 9 年前
        1
  •  2
  •   DkPathak    12 年前

    将复选框Listener设置为需要查看的复选框

    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
  •  2
  •   Russell Davis    11 年前

    看一看 DateSlider 是一个伟大的,可定制的日期选择器的替代品。

        3
  •  1
  •   tbruyelle    14 年前

    因为无法从 DatePicker ,我最终决定添加 CheckBox “忽略年份字段”以实现解决方案。

        4
  •  0
  •   Abhishek Garg    9 年前

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

    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());
        }
    
        5
  •  0
  •   vtlinh    9 年前

    一班轮:

    getDatePicker().findViewById(Resources.getSystem().getIdentifier("year", "id", "android")).setVisibility(View.GONE);
    
        6
  •  -1
  •   Andrew M. Andrews III    14 年前

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