【问题标题】:Can I customize the TimePicker or DatePicker provided by default on Android?我可以自定义 Android 默认提供的 TimePicker 或 DatePicker 吗?
【发布时间】:2020-11-03 14:58:51
【问题描述】:
我想知道是否可以自定义 Android 中默认可用的 DatePicker 和 TimePicker。我主要使用微调模式,但我希望能够自定义字体、大小和旋转等各种字体,而不仅仅是更改背景颜色(通过输入 android:background 属性中创建的 drawble 进行更改)。我想知道是否可以将其更改为ios默认使用的TimePicker之类的东西。
【问题讨论】:
标签:
android
datepicker
timepicker
【解决方案1】:
要使用 TimePickerDialog 显示 TimePicker,您需要通过扩展 DialogFragment 类并实现 onCreateDialog 方法来创建片段。在 onCreateDialog 方法中,需要实例化 TimePickerDialog 设置当前时间并返回。
在需要展示TimePicker的activity中,需要实例化Fragment,响应用户点击按钮等事件进行展示。
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");
}
}