web-dev-qa-db-ja.com

日付と時刻の選択ダイアログ

timedateを同時に選択できるダイアログを作成したい
Androidでそれを実行できるデフォルトのウィジェットはありません であることを知っています。私は、同様のスタッフがどうやって オープンソースプロジェクト があるかを知っています。このプロジェクトの問題は、ダイアログにdatePickertimePickerの2つのボタンがあることです。

enter image description here

それは私がやりたいことではありません-日付と時刻のピッカーが同時に表示されるようにします。
したがって、2つの主な問題は次のようになると思います。

  1. 最初に、同じダイアログに時刻と日付のピッカーを表示します。
  2. 2番目の問題は、時刻と日付のピッカーの外観を変更することです(オレンジ色)。

最初の問題はBhaveshによって解決されました。ここに私が得るものがあります:

enter image description here

問題は、すべての青いバーの色オレンジ色に変更したいということです。
追加した Android:calendarViewShown="false"右側のカレンダーを削除します:)ありがとう、Bhaveshと私はテーマを[〜#〜] holo [〜#〜]に変更しました
ここに私が得るものがあります:

enter image description here

コードをダウンロードできます(私ができる最善の方法です)。 こちら からダウンロードできます。

51
haythem souissi

最初に同じダイアログに時刻と日付のピッカーを表示します

ここで私はあなたにいくつかを助けることができます:DatePickerTimePickerLinearLayoutで構成されるレイアウトを作成し、向きを垂直に設定できます。

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から日付と時刻の値を読み取ります。

スクリーンショットのように見えるものを作成するには、すべてのものを独自のロジックでカスタマイズすることをお勧めします。

77

青いバーの色を変更するには、以下を試してください。

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

2
Harish

多くの解決策がありますが、そのうちの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();
}
0