timeとdateを同時に選択できるダイアログを作成したい。
Androidでそれを実行できるデフォルトのウィジェットはありません であることを知っています。私は、同様のスタッフがどうやって オープンソースプロジェクト があるかを知っています。このプロジェクトの問題は、ダイアログにdatePickerとtimePickerの2つのボタンがあることです。
それは私がやりたいことではありません-日付と時刻のピッカーが同時に表示されるようにします。
したがって、2つの主な問題は次のようになると思います。
最初の問題はBhaveshによって解決されました。ここに私が得るものがあります:
問題は、すべての青いバーの色をオレンジ色に変更したいということです。
追加した Android:calendarViewShown="false"
右側のカレンダーを削除します:)ありがとう、Bhaveshと私はテーマを[〜#〜] holo [〜#〜]に変更しました
ここに私が得るものがあります:
コードをダウンロードできます(私ができる最善の方法です)。 こちら からダウンロードできます。
最初に同じダイアログに時刻と日付のピッカーを表示します
ここで私はあなたにいくつかを助けることができます:DatePicker
とTimePicker
のLinearLayout
で構成されるレイアウトを作成し、向きを垂直に設定できます。
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>
次に、このレイアウトを使用してダイアログを作成します。
Dialog dialog = new Dialog(mContext);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Dialog");
ユーザーがTimePicker
と対話することに反応するには、次のようにします。
TimePicker tp = (TimePicker)dialog.findViewById(R.id.timepicker1);
tp.setOnTimeChangedListener(myOnTimechangedListener);
ユーザーが設定を終了したときにDate- and TimePickerから値を取得するには、ダイアログに[OK]ボタンを追加し、ユーザーが[OK]を押したときにDate- and TimePickerから日付と時刻の値を読み取ります。
スクリーンショットのように見えるものを作成するには、すべてのものを独自のロジックでカスタマイズすることをお勧めします。
青いバーの色を変更するには、以下を試してください。
THEME_HOLO_DARKを拡張する次のように独自のテーマを定義します
次のようにしてみてください:
<style name="testo" parent="@Android:style/Widget.DeviceDefault.DatePicker">
<item name="Android:divider">@drawable/MyDivider</item>
</style>
以下を確認してください change-basic-theme-color-of-Android-application
多くの解決策がありますが、そのうちの1つがあります。私はこの簡単な方法が好きです:
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();
}