我可以自定义 Android 默认提供的 TimePicker 或 DatePicker 吗?

Posted

技术标签:

【中文标题】我可以自定义 Android 默认提供的 TimePicker 或 DatePicker 吗?【英文标题】:Can I customize the TimePicker or DatePicker provided by default on Android? 【发布时间】:2020-11-03 14:58:51 【问题描述】:

我想知道是否可以自定义 android 中默认可用的 DatePicker 和 TimePicker。我主要使用微调模式,但我希望能够自定义字体、大小和旋转等各种字体,而不仅仅是更改背景颜色(通过输入 android:background 属性中创建的 drawble 进行更改)。我想知道是否可以将其更改为ios默认使用的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");
        
     

【讨论】:

以上是关于我可以自定义 Android 默认提供的 TimePicker 或 DatePicker 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android提供的常用注解以及自定义注解代替枚举

处理 Android 自定义内容提供程序中的(跨进程)异常

android自定义相机拉伸surfaceview

为备用键创建自定义弹出键盘

Android中如何创建自定义的复选框?

Android ToolBar自定义图标,关联DrawerLayout