52

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

ここに画像の説明を入力してください

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

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

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

ここに画像の説明を入力してください

ここでの問題は、すべての青いバーの色オレンジ色に変更したいということです。
右側のカレンダーを削除するために追加android:calendarViewShown="false"しました:)Bhaveshに感謝し、テーマをHOLOに変更しました
次の ようになります。

ここに画像の説明を入力してください

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

4

4 に答える 4

77

まず、日時ピッカーを同じダイアログに表示させます

ここで私はあなたに何を助けることができます:あなたは方向が垂直に設定されたaDatePickerとaTimePickerで構成されるレイアウトを作成することができます。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-およびTimePickerから値を取得するには、ダイアログに[OK]ボタンを追加し、ユーザーが[OK]を押したときにDate-およびTimePickerから日付と時刻の値を読み取ります。

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

于 2013-01-10T09:17:26.670 に答える
2

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

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を確認してください

于 2013-01-10T09:56:20.183 に答える
1

日付ピッカー時間ピッカーの両方が1つのダイアログに表示されます。このシンプルで簡単なライブラリを確認してください。CustomDateTimePicker

ここに画像の説明を入力してください ここに画像の説明を入力してください

それが役に立てば幸い。ハッピーコーディング!!!

于 2020-04-19T05:58:30.847 に答える
0

利用可能な解決策はたくさんありますが、そのうちの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();
}
于 2017-07-13T12:09:27.403 に答える