Cambiar el color del día en un DatePicker

Loading...

Cambiar el color del día en un DatePicker

Esta pregunta parece sencilla, pero no he encontrado la respuesta en ningún lado.
Lo que busco es que el color que rodea el día en un DatePicker deje de ser rojo para ser azul (si, se que parece una tontería, pero no funciona nada)
Este es mi layout:

Y este es mi código xml


¿Alguna idea de cómo cambiarlo?
(Editado a raíz de la respuesta de Luis Yul)
El código de mi Actividad es el siguiente:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_usuario);
    lblBienvenida = (TextView) findViewById(R.id.lblBienvenida);
    calendario = (DatePicker) findViewById(R.id.calendario);
    tablePaciente = (TableLayout) findViewById(R.id.tablePaciente);
    i = getIntent();
    String username = i.getStringExtra("us_usuario");
    lblBienvenida.setText("Bienvenid@: " + username);
    Calendar c = Calendar.getInstance();
    final int year = c.get(Calendar.YEAR);
    final int month = c.get(Calendar.MONTH);
    final int day = c.get(Calendar.DAY_OF_MONTH);
    calendario.init(year, month, day, this);
    onDateChanged(calendario, year, month, day);
    new DatePicker(Usuario.this, R.style.DialogTheme, new DatePicker.OnDateChangedListener() {
        @Override
        public void onDateChanged (DatePicker datePicker, int año, int mes, int dia){
            String username = i.getStringExtra("us_usuario");
            String password = i.getStringExtra("us_clave");
            int Año = calendario.getYear();
            int Mes = calendario.getMonth()+1;
            int Dia = calendario.getDayOfMonth();
            String fecha = Año+"-"+Mes+"-"+Dia;
            Response.Listener responseListener = new Response.Listener(){
                @Override
                public void onResponse(String response){
                    try {

                        JSONArray jsonArray = new JSONArray(response);
                        String hora_inicio, hora_fin, fecha, nombre, apellidos, prestacion;
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject jsonObject = jsonArray.getJSONObject(i);
                            hora_inicio = jsonObject.getString("hora_inicio");
                            hora_fin = jsonObject.getString("hora_fin");
                            fecha = jsonObject.getString("fecha");
                            nombre = jsonObject.getString("nombre");
                            apellidos = jsonObject.getString("apellidos");
                            prestacion = jsonObject.getString("prestacion");

                            String[] arrayRespuesta = {hora_inicio, hora_fin, nombre, apellidos, prestacion};

                            int[] comprobarFecha = separarFecha(fecha);
                            TablaPacientes tabla = new TablaPacientes(Usuario.this, tablePaciente);
                            if(comprobarFecha[0] == calendario.getYear() && comprobarFecha[1] == calendario.getMonth() + 1 && comprobarFecha[2] == calendario.getDayOfMonth()){
                                tablePaciente.removeAllViews();
                                tabla.agregarCabecera(R.array.tabla_pacientes);
                                cargarTabla(tabla, arrayRespuesta);
                            }else{
                                tablePaciente.removeAllViews();
                                Toast t = Toast.makeText(getApplicationContext(), "No hay pacientes para esta fecha", Toast.LENGTH_LONG);
                                t.show();
                            }
                        }
                    }catch(JSONException e){
                        tablePaciente.removeAllViews();
                        Toast t = Toast.makeText(getApplicationContext(), "No hay pacientes para esta fecha", Toast.LENGTH_LONG);
                        t.show();
                    }catch(ArrayIndexOutOfBoundsException e){
                        tablePaciente.removeAllViews();
                        AlertDialog.Builder builder = new AlertDialog.Builder(Usuario.this);
                        builder.setMessage("Error de excepción en el array "+e.getLocalizedMessage())
                                .setNegativeButton("Retry", null)
                                .create().show();
                    }
                }
            };
            RegisterRequest registerRequest = new RegisterRequest(username, password, fecha, responseListener);
            RequestQueue queue = Volley.newRequestQueue(Usuario.this);
            queue.add(registerRequest);
        }, 2017, 10, 29).show();
    }
}

Me da error en el cierre del onCreate y el OnDateChanged
}, 2017, 10, 29).show();
    }
}


¿Cómo puedo hacer el código para que se inicialice diréctamente con el color azul para luego usar un onDateChanged? Con la respuesta que he recibido sale un nuevo calendario con el color azul pero luego el que uso para lo que necesito sigue en rojo.

Solutions/Answers:

Answer 1:

Intenta añadiendo este estilo en tu archivo styles.xml

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorAccent">@color/colorPrimaryDark</item>
</style>

Luego en el método onCreate de tu actividad añade el siguiente código:

new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            //DO SOMETHING
        }
    }, 2015, 02, 26).show();
}

Answer 2:

Prueba a cambiar el xml cambiando los parámetros que necesites según este código:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">
    <com.rajesh.customcalendar.Calendar
      app:startYear="2006"
      app:endYear="2017"
      app:monthYearTextColor="@android:color/black"
      app:monthYearBackgroundColor="@android:color/holo_green_dark"
      app:todayTextColor="@android:color/holo_green_dark"
      app:todayBackgroundColor="@android:color/black"
      app:expandedCalendarBackgroundColor="@android:color/holo_white_dark"
      app:expandedCalendarTextColor="@android:color/holo_blue_dark"
      app:expandedCalendarSelectedColor="@android:color/holo_blue_dark"
      app:calendarBackground="@android:color/holo_green_dark"
      app:calendarTextColor="@android:color/holo_purple"
      app:calendarSelectedColor="@android:color/white"
      app:eventDotColor="@android:color/white"
      android:id="@+id/customCalendar"
      app:identifier="customCalendar"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
   />
</LinearLayout>

Referencia

References

Loading...