Return 材质时间选择器

Return MaterialTimePicker

一直在寻找如何将 MaterialTimePicker 实现到旧的 TimerPickerDialog

https://github.com/material-components/material-components-android/blob/master/catalog/java/io/material/catalog/timepicker/TimePickerMainDemoFragment.java

我当前的解决方案是这个但是太旧了

  return new TimePickerDialog(getActivity(),android.R.style.Theme_Holo_Light_Dialog, (TimePickerDialog.OnTimeSetListener)getActivity(), hour, minute, DateFormat.is24HourFormat(getActivity()));

代码

public class TimePickerFragment extends DialogFragment {
    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);
        return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, DateFormat.is24HourFormat(getActivity()));

    }
}

由此

至此

MaterialTimePicker materialTimePicker = new MaterialTimePicker.Builder()
            .setTimeFormat(TimeFormat.CLOCK_24H)
            .build();


    pick.setOnClickListener(v -> materialTimePicker.show(getSupportFragmentManager(),
            DiConstant.TIME_PICKER));

    materialTimePicker.addOnPositiveButtonClickListener(dialog -> {
        int newHour = materialTimePicker.getHour();
        int newMinute = materialTimePicker.getMinute();
        String time = String.format(Locale.getDefault(), "%02d:%02d", newHour, newMinute);
        pick.setText(time);
    });

其中 pick 是您显示所选时间的视图。 要回答您的评论,您可以尝试

return materialTimePicker.show(getSupportFragmentManager(),
            "TIME_PICKER");