0

我已使用此 Android 开发人员页面上的代码在按下按钮时创建时间选择器。但是,我没有找到正确的外观。我将我的应用程序定位到 API 18,最小值为 10,因为由于使用率高,我想支持 2.3 。所需的最低 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);
    }

}
4

3 回答 3

3

用于ContextThemeWrapper显式提供基于 Holo 的主题Dialog,例如

return new TimePickerDialog(
        new ContextThemeWrapper(getActivity(), R.style.YourAppStyleInheritingFromHolo),
        this, hour, minute, DateFormat.is24HourFormat(getActivity()));
于 2013-10-28T17:46:46.677 回答
3

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

在您的清单中,在应用程序中:

android:theme="@style/AppTheme"

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

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

在 values-v11 和 values-v14 中使用它时:

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

系统将根据设备上的 Android 版本在 Theme.Light 和 Theme.Holo.Light 之间切换。

于 2013-10-25T14:09:30.533 回答
1

你可能想看看这个库。它是从 Android 4.2 向后移植的 TimePicker,适用于 android 2.1 以上。

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

于 2013-10-28T16:20:28.410 回答