如何创建 TimePickerDialog android

How to create TimePickerDialog android

我想创建 TimePickerDialog,主题是示​​例对话框。

但我遵循这个link

http://www.android-examples.com/create-timepickerdialog-to-select-time-in-12-hours-format-android/

结果不是简单的对话框

结果是

我要

如何设置?

对不起,我的图片太大了。

您可以尝试 datePickerMode 微调器,就像下面日期时间选择器中的代码

android:calendarViewShown="false"
android:datePickerMode="spinner"

试试下面的代码。它看起来与您提供的图像几乎相似。要么使用这个

<TimePicker
    android:id="@+id/simpleTimePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:timePickerMode="spinner"/>

或者这个。

 final Calendar calenderInstance = Calendar.getInstance();
    int hr = calenderInstance.get(Calendar.HOUR_OF_DAY);
    int min = calenderInstance.get(Calendar.MINUTE);
    TimePickerDialog.OnTimeSetListener onTimeListner = new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            if (view.isShown()) {
                calenderInstance.set(Calendar.HOUR_OF_DAY, hourOfDay);
                calenderInstance.set(Calendar.MINUTE, minute);
            }
        }
    };
    TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this,
            android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
            onTimeListner, hr, min, true);
    timePickerDialog.setTitle("Set Time");
    Objects.requireNonNull(timePickerDialog.getWindow()).setBackgroundDrawableResource(android.R.color.transparent);
    timePickerDialog.show();

我已经为旧的 TimePickerDialog 制作了一种方法...我和你有同样的情况..这对我来说非常有用..

使用以下方法

    public void showHourPicker() {
            final Calendar myCalender = Calendar.getInstance();
            int hour = myCalender.get(Calendar.HOUR_OF_DAY);
            int minute = myCalender.get(Calendar.MINUTE);


            TimePickerDialog.OnTimeSetListener myTimeListener = new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    if (view.isShown()) {
                        myCalender.set(Calendar.HOUR_OF_DAY, hourOfDay);
                        myCalender.set(Calendar.MINUTE, minute);

                    }
                }
            };
            TimePickerDialog timePickerDialog = new TimePickerDialog(getActivity(), android.R.style.Theme_Holo_Light_Dialog_NoActionBar, myTimeListener, hour, minute, true);
            timePickerDialog.setTitle("Choose hour:");
  timePickerDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
            timePickerDialog.show();
        }

希望这对您有所帮助...如果您需要任何帮助,请告诉我

更改此行:

timepickerdialog = new TimePickerDialog(MainActivity.this,
new TimePickerDialog.OnTimeSetListener() {

对此:

timepickerdialog = new TimePickerDialog(MainActivity.this, AlertDialog.THEME_DEVICE_DEFAULT_DARK,
                    new TimePickerDialog.OnTimeSetListener() {

它允许您为您的TimePicker

设置主题

自定义时间选择器:

您可以创建一个 class DateTimePickerCustom,其中包含您可以在整个项目中随处使用的方法:

    public static void getTimePicker(Context context, final int position, final PickerClickListener pickerClickListener) {  
          final Dialog dialog = new Dialog(context);
            dialog.setContentView(R.layout.dialog_time);
            dialog.show();
            final TimePicker timePicker = (TimePicker) dialog.findViewById(R.id.timePicker);
            timePicker.setIs24HourView(false);
            Button buttonOk = (Button) dialog.findViewById(R.id.buttonOk);
            Button buttonCancel = (Button) dialog.findViewById(R.id.buttonCancel);
            buttonCancel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });
            buttonOk.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    try {
                        SimpleDateFormat sdf24 = new SimpleDateFormat("HH:mm");
                        SimpleDateFormat sdf12 = new SimpleDateFormat("hh:mm a");

                        String strTime = timePicker.getCurrentHour() + ":" + timePicker.getCurrentMinute();
                        Date time = sdf24.parse(strTime);
                        String formattedTime = sdf12.format(time);
                        Log.d(TAG, "formattedTime: " + formattedTime);
                        pickerClickListener.onTimeSelect(formattedTime, position);
                        dialog.dismiss();

                    } catch (ParseException e) {
                        e.printStackTrace();
                    }


                }
            });
}

XML代码:

<EditText
       android:id="@+id/editTextStartTime"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_centerVertical="true"
       android:editable="false"
       android:focusable="false"
       android:singleLine="true"
       android:textSize="14sp" />

MainActivity 中调用此方法:

 @OnClick(R.id.editTextStartTime)
    public void startTimePicker() {
        DateTimePickerCustom.getTimePicker(context, 0, this);
    }

您可以像 S-planner

一样使用自定义 time picker and i have more customized it here