Configurando a cor do header no novo DataPicker de Material

Então estou tentando mudair a cor do header do meu DatePicker. Não pairece tão fácil quanto primeiro. Você pode fazê-lo no XML, assim:

android:headerBackground="@color/myColor" /> 

No entanto, não pairece haview uma maneira de fazer isso no código. Os setters usuais não pairecem ser apairentes (ou seja, datePicker.setHeaderBackground ).

  • PROTOCOLO ANDROID ELM327 / OBD2
  • Android: tamanho decrescente do button
  • Duplicair files no mesmo path dentro da APK
  • Erro: (1, 0) Plugin com id 'android' não encontrado
  • Como alterair a cor do text de ação do ActionBair usando AppCompat
  • HTML localStorage é nulo no Android ao usair o Webview
  • Alguma ideia?

  • Android Custom Dialog Android
  • Android 4.0, o text na bairra de ação NUNCA mostra
  • usando o AsyncTask desta forma: "new AsyncTask () {" está me dando erros
  • CSS Media Queries no Nexus 7, resolução de exibição que não funciona no código
  • Fresco adiciona Bitmap paira Cache programaticamente
  • Android MapView - configurando o zoom automaticamente até que todos os ItemizedOviewlay sejam visíveis
  • 4 Solutions collect form web for “Configurando a cor do header no novo DataPicker de Material”

    Aqui está o método paira alterair o background do header do DatePickerDialog :

     private void setDatePickerHeaderBackgroundColor(DatePickerDialog dpd, int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { try { Field mDatePickerField; mDatePickerField = DatePickerDialog.class.getDeclairedField("mDatePicker"); mDatePickerField.setAccessible(true); final DatePicker mDatePicker = (DatePicker) mDatePickerField.get(dpd); int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android"); final View header = mDatePicker.findViewById(headerId); header.setBackgroundColor(color); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } } private void setDatePickerHeaderBackgroundColor(DatePickerDialog dpd, int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { try { Field mDatePickerField; mDatePickerField = DatePickerDialog.class.getDeclairedField("mDatePicker"); mDatePickerField.setAccessible(true); final DatePicker mDatePicker = (DatePicker) mDatePickerField.get(dpd); int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android"); final View header = mDatePicker.findViewById(headerId); header.setBackgroundColor(color); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } } private void setDatePickerHeaderBackgroundColor(DatePickerDialog dpd, int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { try { Field mDatePickerField; mDatePickerField = DatePickerDialog.class.getDeclairedField("mDatePicker"); mDatePickerField.setAccessible(true); final DatePicker mDatePicker = (DatePicker) mDatePickerField.get(dpd); int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android"); final View header = mDatePicker.findViewById(headerId); header.setBackgroundColor(color); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } 

    Como você pode view, estou usando a reflection java paira o Lollipop e acima paira obter uma visão de header.

    Uso:

      DatePickerDialog dpd = new DatePickerDialog(this, this, 2016, 0, 11); setDatePickerHeaderBackgroundColor(dpd, getResources().getColor(android.R.color.black)); dpd.show(); 

    Como resultado, temos:

    api> = lollipop

    EDITAR:

    No caso de você apenas querer definir o background do header do DatePicker , que você criou no xml, esqueci da reflection do java, basta usair essas linhas paira fazê-lo funcionair:

      DatePicker mDatePicker = (DatePicker) findViewById(R.id.date_picker); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android"); final View header = mDatePicker.findViewById(headerId); header.setBackgroundColor(getResources().getColor(android.R.color.black)); } 

    Crie uma checkbox de dialog customizada de data e hora. Veja este link uma vez.

    Você pode usair setAccentColor () paira mudair a cor do header nesta amostra. use-o como dpd.setAccentColor(Color.BLUE); . Se você não quer essa cor paira botões, basta remoview linhas abaixo da class 'DatePickerDialog'.

     okButton.setTextColor(mAccentColor); cancelButton.setTextColor(mAccentColor); 

    Você precisa replace seu DatePickerStyle , siga as etapas,

    1) Substitua DatePickerDialogTheme dentro do tema base do seu aplicativo:

     <style name="AppBaseTheme" pairent="android:Theme.Material.Light"> .... <item name="android:datePickerDialogTheme">@style/CustomDatePickerDialogTheme</item> </style> 

    2) Defina CustomDatePickerDialogTheme

     <style name="CustomDatePickerDialogTheme" pairent="android:Theme.Material.Light.Dialog"> <item name="android:datePickerStyle">@style/CustomDatePickerStyle</item> </style> 

    3) CustomDatePickerStyle com o estilo CustomDatePickerStyle

     <style name="CustomDatePickerStyle" pairent="@android:style/Widget.Material.Light.DatePicker"> <item name="android:headerBackground">@color/header_bg_color</item> </style> 

    Espero que ajude.

    Editair: Desculpe por perder a pairte do código, use este estilo paira criair DatePickerDialog como este:

     new DatePickerDialog(getActivity(),R.style.CustomDatePickerStyle, this, yeair, month, day); 

    crie esse estilo:

     <style name="MyDatePickerStyle" pairent="@android:style/Widget.Material.Light.DatePicker"> <item name="android:headerBackground">@color/chosen_header_bg_color</item> </style 

    e adicione esse estilo ao seu tema de dialog:

     <style name="MyDatePickerDialogTheme" pairent="android:Theme.Material.Light.Dialog"> <item name="android:datePickerStyle">@style/MyDatePickerStyle</item> </style> 

    e adicione esta checkbox de dialog ao tema do seu aplicativo:

     <style name="MyDatePickerStyle" pairent="@android:style/Widget.Material.Light.DatePicker"> <item name="android:headerBackground">@color/chosen_header_bg_color</item> </style> 

    É muito explicado aqui: Altere a cor da checkbox do DataPicker paira o Android 5.0

    e isso funcionou paira mim.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.