2014-01-06 63 views
0

我需要更改DatePicker的字体颜色,它被视为日历。我发现的所有答案都适合纺纱者的观点。那么有没有办法在日历视图中更改字体颜色?在日历视图中为Android更改DatePicker的字体颜色

+0

http://stackoverflow.com/questions/18584934/custom-datepicker-in-android敬请期待在这个帖子 – 2014-01-06 12:32:06

+0

@ user3110424我想你误解了我的问题。我已经有一个android:calendarViewShown =“true”的日期选择器。我需要的是改变它的颜色 –

+0

https://github.com/SimonVT/android-datepicker。检查它是否有帮助。和这个http://stackoverflow.com/questions/20148671/android-how-to-change-the-color-of-the-datepicker-divider它使用反射来改变分隔线的颜色。 – Raghunandan

回答

0

你可以做到这一点使用getDeclaredFields()方法

样品:在这里,我改变了TEXTSIZE和填充,它为我工作。

DatePicker datepicker = (DatePicker) findViewById(R.id.datePicker); 

    try { 
     Field f[] = datepicker.getClass().getDeclaredFields(); 
     for (Field field : f) 
     { 
      if (field.getName().equals("mYearPicker")) 
      { 
       field.setAccessible(true); 
       Object yearPicker = new Object(); 
       yearPicker = field.get(datepicker); 
       ((View) yearPicker).setVisibility(View.VISIBLE); 
       ((View) yearPicker).setPadding(-2, 0, -2, 0); 

       View childpicker; 
       childpicker = (View) findViewById(Resources.getSystem().getIdentifier("year", "id","android")); 
       EditText textview = (EditText) childpicker.findViewById(Resources.getSystem().getIdentifier("timepicker_input", "id", "android")); 
       textview.setTextSize(26); 
       textview.setPadding(-3, 0, -3, 0); 

       //System.out.println("ss1:"+field); 
      } 

      if (field.getName().equals("mDayPicker")) 
      { 
       field.setAccessible(true); 
       Object yearPicker = new Object(); 
       yearPicker = field.get(datepicker); 
       ((View) yearPicker).setVisibility(View.VISIBLE); 
       ((View) yearPicker).setPadding(-2, 0, -2, 0); 


       View childpicker; 
       childpicker = (View) findViewById(Resources.getSystem().getIdentifier("month", "id","android")); 
       EditText textview = (EditText) childpicker.findViewById(Resources.getSystem().getIdentifier("timepicker_input", "id", "android")); 
       textview.setTextSize(26); 
       textview.setPadding(-3, 0, -3, 0); 

       //System.out.println("ss2:"+field); 
      } 

      if (field.getName().equals("mMonthPicker")) 
      { 
       field.setAccessible(true); 
       Object yearPicker = new Object(); 
       yearPicker = field.get(datepicker); 
       ((View) yearPicker).setVisibility(View.VISIBLE); 
       ((View) yearPicker).setPadding(-2, 0, -2, 0); 

       View childpicker; 
       childpicker = (View) findViewById(Resources.getSystem().getIdentifier("day", "id","android")); 
       EditText textview = (EditText) childpicker.findViewById(Resources.getSystem().getIdentifier("timepicker_input", "id", "android")); 
       textview.setTextSize(26); 
       textview.setPadding(-3, 0, -3, 0); 
       //System.out.println("ss3:"+field); 
      } 
      //System.out.println("ss:"+field); 


     } 
    } catch (SecurityException e) { 
     Log.d("ERROR", e.getMessage()); 
    } catch (IllegalArgumentException e) { 
     Log.d("ERROR", e.getMessage()); 
    } catch (IllegalAccessException e) { 
     Log.d("ERROR", e.getMessage()); 
    }catch (Exception e) { 
     Log.d("ERROR", e.getMessage()); 
    } 
+0

您确定您的代码对于android:calendarViewShown =“true”的DatePicker有效吗? –

+0

从未尝试过'android:calendarViewShown =“true”'但它仅适用于日期选择器 –