2017-09-11 4 views
0

Dans mon application, j'utilise la boîte de dialogue DatePicker et la boîte de dialogue Time Picker pour choisir la date et l'heure en conséquence. Maintenant, dans ces boîtes de dialogue, la couleur est définie en fonction de ma couleur. Mais ce que je veux faire, c'est de changer ces couleurs manuellement. Pour exmaple j'ai changé la couleur de la barre d'outils, de cette façon toolbar.setBackgroundColor (Constant.color); Mais, comment puis-je changer la couleur de l'en-tête, (où la date actuelle est montrée - j'ai joint l'image) et la couleur datepicker (le sélecteur rond qui indiquent la date actuelle) de la même manière manuellement.Comment changer la couleur de la boîte de dialogue de calendrier Android

Voici mon image de DeatepickerDialog

DatePicker Dialog

Voici mon code pour dialogue sélecteur de date

public class TodoAddActivity extends AppCompatActivity { 

// Variables 
private Context mContext; 

.... 

private RealmResults<TodoModel> results; 

public final static String INTENT_KEY_ID = "taskId"; 
public final static String DATE_FORMAT = "dd/MMM/yy"; 

Constant constant; 
SharedPreferences app_preferences; 
int appTheme; 
int themeColor; 
int appColor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.todo_add_layout); 

    app_preferences = PreferenceManager.getDefaultSharedPreferences(this); 
    appColor = app_preferences.getInt("color", 0xff3F51B5); 
    appTheme = app_preferences.getInt("theme", 0xff3F51B5); 
    themeColor = appColor; 
    constant.color = appColor; 

    if (themeColor == 0){ 
     setTheme(Constant.theme); 
    }else if (appTheme == 0){ 
     setTheme(Constant.theme); 
    }else{ 
     setTheme(appTheme); 
    } 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_add); 
    toolbar.setBackgroundColor(Constant.color); 
    setSupportActionBar(toolbar); 

    mContext = this; 
    realm=Realm.getDefaultInstance(); 
    setUpUIViews(); 
    showData(); 

    final String taskId = getIntent().getStringExtra(INTENT_KEY_ID); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (taskId == null) 
       addTask(); 
      else 
       editTask(taskId); 
     } 
    }); 
    mTaskDateEditText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      datePicker(view); 
     } 
    }); 
    mTaskDateEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 
      if (b) 
       datePicker(view); 
     } 
    }); 
    mTaskTimeEditText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      timePicker(view); 
     } 
    }); 
    mTaskTimeEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 
      if (b) 
       timePicker(view); 
     } 
    }); 
    if (taskId != null) { 
     fillTask(realm.where(TodoModel.class).equalTo("id", taskId).findFirst()); 
     button.setText("EDIT"); 
    } 



} 
private void setUpUIViews() { 
    ... 
} 

public void showData(){ 
    //tasks = new ArrayList<>(); //error 
    //RealmResults<TodoModel> tasksResult = realm.where(TodoModel.class).findAll(); 
    //for (TodoModel task : tasksResult) 
    // tasks.add(task); //error*/ 
    results = realm.where(TodoModel.class).findAll(); 
} 

protected TodoModel getTask(int position) { 
    return results.get(position); 
} 

private void fillTask(TodoModel task) { 
    ... 
} 

private void addTask() { 
    ... 
} 

protected void addTask(TodoModel task) { 

    .. 
} 
private void editTask(String taskId) { 
    S.... 
} 

protected void updateTask(TodoModel task) { 

    .... 
} 


private void datePicker(final View view) { 
    Calendar currentTime = Calendar.getInstance(); 
    int year = currentTime.get(Calendar.YEAR); 
    int monthOfYear = currentTime.get(Calendar.MONTH); 
    int dayOfMonth = currentTime.get(Calendar.DAY_OF_MONTH); 

    DatePickerDialog mDatePickerDialog = new DatePickerDialog(mContext,0, new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) { 
      Calendar calendar = Calendar.getInstance(); 
      calendar.set(year, monthOfYear, dayOfMonth); 
      SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); 
      ((EditText) view).setText(sdf.format(calendar.getTime())); 
     } 
    }, year, monthOfYear, dayOfMonth); 

    mDatePickerDialog.setTitle("Select Time"); 
    mDatePickerDialog.show(); 
} 
private void timePicker(final View view) { 
    Calendar mcurrentTime = Calendar.getInstance(); 
    int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); 
    int minute = mcurrentTime.get(Calendar.MINUTE); 
    TimePickerDialog mTimePicker; 
    mTimePicker = new TimePickerDialog(mContext,0, new TimePickerDialog.OnTimeSetListener() { 
     @Override 
     public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
      mTaskTimeEditText.setText(selectedHour + ":" + selectedMinute); 
     } 
    }, hour, minute, true);//Yes 24 hour time 
    mTimePicker.setTitle("Select Time"); 
    mTimePicker.show(); 

} 

}

Répondre

0
new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() { 
@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
    //Your Code 
} 
}, year, monthOfYear, dayOfMonth).show(); 

EDIT - Changement thème Theme.AppCompat .Light.Dialog comme suggéré

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

Nous vous remercions de votre réponse. Mais dans mon application, j'ai une option de paramètres, où j'ai mis autant d'option de couleur pour définir colr en fonction de la sélection de l'utilisateur, j'ai donné mon code, où j'ai défini l'option barre d'outils de cette manière. Mais je voudrais savoir il ya un moyen de changer la couleur de la rubrique de calendrier, où l'heure actuelle montre – tamrezh21

0

Essayez de faire ceci:

Dans votre styles.xml ajouter ce qui suit:

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

Ensuite, dans votre Datepicker faire ce lieu.

DatePickerDialog mDatePickerDialog = new DatePickerDialog(mContext, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() 
+0

@MartinThank pour votre réponse. Mais dans mon application, j'ai une option de paramètres, où j'ai mis autant d'option de couleur pour définir colr en fonction de la sélection de l'utilisateur, j'ai donné mon code, où j'ai défini l'option barre d'outils de cette manière. Mais je voudrais savoir s'il y a moyen de changer la couleur de l'entête de Calender, où l'heure actuelle est affichée – tamrezh21