Je souhaite créer une boîte de dialogue permettant de sélectionner simultanément heure et date.
Je sais que il n’existe pas de widget par défaut capable de le faire sous Android . Je sais aussi qu’il existe des projets open source sur la façon dont le personnel est similaire. Le problème dans ce projet est que dans la boîte de dialogue nous avons deux boutons: datePicker et timePicker.
Et ce n'est pas ce que je veux faire - je veux que le sélecteur de date et d'heure apparaisse en même temps.
Donc, je pense que les deux problèmes principaux seront:
Le premier problème a été résolu par Bhavesh. Voici ce que je reçois:
Le problème maintenant est que je veux changer tous les couleur de la barre bleue en en orange.
J'ai ajouté Android:calendarViewShown="false"
pour supprimer le calendrier à droite :) Merci Bhavesh et j'ai changé le thème en HOLO
Voici ce que je reçois:
Vous pouvez télécharger le code (c'est le mieux que je puisse faire). Vous pouvez télécharger depuis ici .
Faites d'abord apparaître le sélecteur d'heure et de date dans la même boîte de dialogue
Ici, je peux vous aider: vous pouvez créer une mise en page composée d'une DatePicker
et d'une TimePicker
dans une LinearLayout
avec une orientation définie à la verticale.
custom_dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/linearLayout1"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<DatePicker
Android:id="@+id/datePicker1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" >
</DatePicker>
<TimePicker
Android:id="@+id/timePicker1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" >
</TimePicker>
</LinearLayout>
Ensuite, utilisez cette mise en page pour créer votre dialogue.
Dialog dialog = new Dialog(mContext);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Dialog");
Pour réagir à l’interaction de l’utilisateur avec votre TimePicker
, procédez comme suit:
TimePicker tp = (TimePicker)dialog.findViewById(R.id.timepicker1);
tp.setOnTimeChangedListener(myOnTimechangedListener);
Pour obtenir les valeurs de DatePicker et Date lorsque l'utilisateur a fini de les définir, ajoutez un bouton OK dans votre boîte de dialogue, puis lisez les valeurs de date et d'heure dans DatePicker et Date lorsque l'utilisateur appuie sur OK.
Pour créer quelque chose qui ressemble exactement à celui de vos captures d’écran, je vous recommande de personnaliser toutes les choses avec votre propre logique.
Pour changer les couleurs de la barre bleue, essayez ce qui suit.
Définissez votre propre thème comme suit, ce qui étend THEME_HOLO_DARK.
Essayez comme suit: -
<style name="testo" parent="@Android:style/Widget.DeviceDefault.DatePicker">
<item name="Android:divider">@drawable/MyDivider</item>
</style>
Vérifiez les éléments suivants change-basic-theme-color-of-Android-application
Il y a beaucoup de solutions disponibles il y en a une, j'aime cette méthode simple:
String mDateTime;
void getDateTime(){
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
final int hour = c.get(Calendar.HOUR_OF_DAY);
final int minute = c.get(Calendar.MINUTE);
mDateTime = "";
new DatePickerDialog(
mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
mDateTime = year +"-"+ month +"-"+ dayOfMonth;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
new TimePickerDialog(mContext, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mDateTime+=" "+hourOfDay+":"+minute;
}
}, hour, minute, false).show();
}
},500);
}
}, year, month, day).show();
}