How to get 30 min interval in time picker in Android N

前端 未结 1 1750
长情又很酷
长情又很酷 2021-01-17 06:19

I want to get 30 min interval from time picker dialog and below code works proper below Android N but not working in latest device. Be

相关标签:
1条回答
  • 2021-01-17 06:57

    I have resolved my issue using this library and here is my complete code which may help someone in the future.

    My complete code is in below.

    public class MainActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {
    
        private TextView timeTextView;
        private TimePickerDialog timePickerDialog;
        private Button timeButton;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // Find our View instances
            timeTextView = findViewById(R.id.time_textview);
            timeButton = findViewById(R.id.time_button);
    
            // Show a timepicker when the timeButton is clicked
            timeButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Calendar now = Calendar.getInstance();
    
                    timePickerDialog = TimePickerDialog.newInstance(
                            MainActivity.this,
                            now.get(Calendar.HOUR_OF_DAY),
                            now.get(Calendar.MINUTE),
                            false
                    );
    
                    timePickerDialog.setThemeDark(false);
                    timePickerDialog.setTitle("TimePicker Title");
                    timePickerDialog.setTimeInterval(1, 30, 60);                            
                    timePickerDialog.setAccentColor(Color.parseColor("#9C27B0"));
    
                    timePickerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                        @Override
                        public void onCancel(DialogInterface dialogInterface) 
                            Log.d("TimePicker", "Dialog was cancelled");
                        }
                    });
                    timePickerDialog.show(getFragmentManager(), "Timepickerdialog");
                }
            });
        }
    
        @Override
        public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
            updateEndTime(hourOfDay,minute);
        }
    
        private void updateEndTime(int hours, int mins) {
            String timeSet = "";
            if (hours > 12) {
                hours -= 12;
                timeSet = "PM";
            } else if (hours == 0) {
                hours += 12;
                timeSet = "AM";
            } else if (hours == 12) {
                timeSet = "PM";
            } else {
                timeSet = "AM";
            }
    
            // Append in a StringBuilder
            String aTime = new StringBuilder().append(pad(hours)).append(':')
                    .append(pad(mins)).append(" ").append(timeSet).toString();
    
            timeTextView.setText(aTime);
        }
    
        private static String pad(int c) {
            if (c >= 10)
                return String.valueOf(c);
            else
                return "0" + String.valueOf(c);
        }
    
        @Override
        public void onResume() {
            super.onResume();
            TimePickerDialog tpd = (TimePickerDialog) getFragmentManager().findFragmentByTag("Timepickerdialog");
            if (tpd != null) tpd.setOnTimeSetListener(this);
        }
    }
    

    My desire output is like this:

    0 讨论(0)
提交回复
热议问题