Android时间选择器

时间:2013-10-25 13:55:24

标签: java android timepicker android-timepicker

我已经使用this Android developers page上的代码在按下按钮时创建时间选择器。但是,我没有正确看待它。我将我的应用程序定位到API 18,最小值为10,因为我希望支持2.3 high usage。所需的最低SDK似乎没有对问题产生影响(我将其设置为16):

我正在使用Android 4.1.2,API 16在我的HTC One S上调试应用程序。我得到了这种时间选择器,但我希望它看起来很现代,就像之前链接的Android开发者页面一样。

http://www.b2creativedesigns.com/Tutorials/TimePicker/tutorial_timepicker2.png

为什么要使用这个史前时间选择器?

我使用以下代码段创建对话框。我从FragmentActivity中调用它。

DialogFragment newFragment = TimePickerFragment.newInstance(2);
newFragment.show(getSupportFragmentManager(), "endtime");

这是TimePickerFragment的代码。

public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
    private static int id;

    public static TimePickerFragment newInstance(int _id) {
        Bundle args = new Bundle();
        args.putInt("id", _id);

        id = _id;

        TimePickerFragment f = new TimePickerFragment();
        f.setArguments(args);

        return f;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        id = getArguments().getInt("id");

        int hour = start / 60;  // start is a global variable, no problems in these
        int minute = start % 60;

        if(id == 2) {
            hour = end / 60;
            minute = end % 60;
        }

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

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        System.out.println(hourOfDay + ":" + minute);
        setTime(id, hourOfDay, minute);
    }

}

3 个答案:

答案 0 :(得分:3)

您需要使用Holo小部件的Holo主题才能在您的应用中使用。例如:

在你的Manifest中,在申请表中:

android:theme="@style/AppTheme"

并在您的res / values文件夹中:

<style name="AppBaseTheme" parent="android:Theme.Light.NoTitleBar">
</style>

在值-v11和values-v14:

中使用它时
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar">
</style>

系统将在Theme.Light和Theme.Holo.Light之间切换,具体取决于设备上的Android版本。

答案 1 :(得分:3)

使用ContextThemeWrapper明确提供Dialog的基于Holo的主题,例如

return new TimePickerDialog(
        new ContextThemeWrapper(getActivity(), R.style.YourAppStyleInheritingFromHolo),
        this, hour, minute, DateFormat.is24HourFormat(getActivity()));

答案 2 :(得分:1)

您可能想看一下这个库。它是来自Android 4.2的后向移植TimePicker,可以从Android 2.1向上运行。

https://github.com/SimonVT/android-timepicker