我可以自定义 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 吗?的主要内容,如果未能解决你的问题,请参考以下文章