2017-02-05 56 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; 
       } 
      } 
     }