【问题标题】:How to create TimePickerDialog android如何创建 TimePickerDialog android
【发布时间】:2018-01-27 19:34:52
【问题描述】:

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

但我关注这个链接

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

结果不是简单的对话

结果是

我想要

如何设置?

抱歉,我的图片太大了。

【问题讨论】:

  • 时间选择器取决于平台主题
  • 您可以尝试找到您的答案herehere
  • kitkat 版本只会提供您预期的输出。
  • android-examples.com/…点击此链接
  • @komalakhani 完美!

标签: java android dialog datetimepicker


【解决方案1】:

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

<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();

【讨论】:

    【解决方案2】:

    您可以使用自定义time picker,我对它进行了更多自定义here,例如 S-planner

    【讨论】:

      【解决方案3】:

      自定义时间选择器:

      您可以创建一个 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);
          }
      

      【讨论】:

        【解决方案4】:

        我为旧的 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();
                }
        

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

        【讨论】:

        • @ARR.s 你能告诉我你为什么拒绝这个答案吗?
        • 在 Dialog 上调用 show() 总是错误的。你应该使用DialogFragment
        • @PaulBurke ?请检查 TimePickerDialog 和 DialogFragment 之间的区别
        • @LokeshDesai 使用TimePickerDialog 的正确方法是在DialogFragmentonCreateDialog 中创建它。当配置更改发生时,直接在 Dialog 上调用 show() 会泄漏上下文。
        • @paul 是的,同意这可能是个好方法。感谢知识分享。
        【解决方案5】:

        改变这一行:

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

        到这里:

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

        它允许您为TimePicker 设置主题

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-03
            • 1970-01-01
            相关资源
            最近更新 更多