Могу ли я настроить TimePicker или DatePicker, предоставляемые по умолчанию на Android? - PullRequest
0 голосов
/ 14 июля 2020

Мне интересно, могу ли я настроить DatePicker и TimePicker, которые по умолчанию доступны в Android. В основном я использую режим счетчика, но я хочу иметь возможность настраивать различные шрифты, такие как шрифт, размер и вращение, а не просто изменять цвет фона (он был изменен путем ввода чертежа, созданного в свойстве android: background). Интересно, можно ли изменить его на что-то вроде TimePicker, используемого ios по умолчанию.

1 Ответ

2 голосов
/ 14 июля 2020

Чтобы показать TimePicker с помощью TimePickerDialog, вам необходимо создать фрагмент, расширив класс DialogFragment и реализовав метод onCreateDialog. В методе onCreateDialog вам необходимо создать экземпляр TimePickerDialog, установив текущее время, и вернуть его.

В действии, где вам нужно показать TimePicker, вам необходимо создать экземпляр фрагмента и показать его в ответ на пользовательское событие, например, нажатие кнопки .

import java.util.Calendar;

    public class MyTimePickerFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        return new TimePickerDialog(getActivity(), timeSetListener, hour, minute,
                DateFormat.is24HourFormat(getActivity()));
    }

    private TimePickerDialog.OnTimeSetListener timeSetListener =
            new TimePickerDialog.OnTimeSetListener() {
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    Toast.makeText(getActivity(), "selected time is "
                            + view.getHour() +
                            " / " + view.getMinute()
                            , Toast.LENGTH_SHORT).show();
                }
            };
}





 public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void showTimePickerDialog(View v) {
            DialogFragment newFragment = new MyTimePickerFragment();
            newFragment.show(getSupportFragmentManager(), "time picker");
        }
    } 
...