2017-02-05 50 views
0

我創建延伸自定義日期選擇器對話框中colorControlNormal不工作AppCompat.Dialog的棒棒糖設備

Theme.AppCompat.Light.Dialog.Alert

我已經從價值觀/ styles.xml和V21 /風格創造了一個樣式此.XML ...

樣式的代碼是我創造::

<style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> 
     <item name="android:textColorPrimary">@color/accounts_darkgray_text</item> 
     <item name="colorControlNormal">@color/graph_rod_red</item> 
     <item name="android:windowBackground">@color/transparent</item> 
</style> 

My custom date picker

在v21及更高版本中使用colorControlNormal我能夠改變藍色的分隔線顏色,但是在棒棒糖和預棒棒糖設備中,無論我在colorControlNormal中提到,它都不會接受。

如何更改分隔線的顏色,爲21和< 21 android設備?

回答

0

我能解決這個問題,如果這能幫助別人,思想會分享答案。

我使用了反射技術來獲取「分隔線」並將其從代碼隱藏的顏色改變。

LinearLayout llFirst = (LinearLayout) datePicker.getChildAt(0); 
     LinearLayout llSecond = (LinearLayout) llFirst.getChildAt(0); 

     for (int i = 0; i < llSecond.getChildCount(); i++) { 
      NumberPicker picker = (NumberPicker) llSecond.getChildAt(i); // Numberpickers in llSecond 
      Field[] pickerFields = NumberPicker.class.getDeclaredFields(); 
      for (Field pf : pickerFields) { 
       if (pf.getName().equals("mSelectionDivider")) { 
        pf.setAccessible(true); 
        try { 
         ColorDrawable colorDrawable = new ColorDrawable(mActivity.getResources().getColor(R.color 
           .date_picker_divider)); 
         pf.set(picker,colorDrawable); 
        } catch (IllegalArgumentException e) { 
         e.printStackTrace(); 
        } catch (Resources.NotFoundException e) { 
         e.printStackTrace(); 
        } catch (IllegalAccessException e) { 
         e.printStackTrace(); 
        } 
        break; 
       } 
      } 
     }