【问题标题】:Show TimePicker with 12 or 24 hour format in android在 android 中以 12 或 24 小时格式显示 TimePicker
【发布时间】:2013-11-29 08:33:00
【问题描述】:

我的 TimePickerDialog 有问题。 首先检测用户设备的时间是 12 小时还是 24 小时格式:

…
String format;
…
if (DateFormat.is24HourFormat(this)) {
Log.i("control","Format 24");
format=("24");
} else {
 Log.i("control","Format 12");
format=("12");
}
…

现在我的意图是显示带有 am 或 pm 选项的 TimePicker,具体取决于格式:

…
if(format.equals("24"){
view.setIs24HourView(true);
} else {
view.setIs24HourView(true);
} …

这是TimePickerDialog的完整代码:

public class AlarmPreferencesActivity extends ListActivity
…
TimePickerDialog timePickerDialog = new TimePickerDialogs(this, new TimePickerDialog.OnTimeSetListener(){

            @Override
            public void onTimeSet(TimePicker view, int hours, int minutes) {

                Calendar newAlarmTime = Calendar.getInstance();
                newAlarmTime.set(Calendar.HOUR_OF_DAY, hours);
                newAlarmTime.set(Calendar.MINUTE, minutes);
                newAlarmTime.set(Calendar.SECOND, 0);
                alarm.setAlarmTime(newAlarmTime);
                alarmPreferenceListAdapter
                .setMathAlarm(getMathAlarm());
                alarmPreferenceListAdapter
                .notifyDataSetChanged();

            }},
            alarm.getAlarmTime().get(Calendar.HOUR_OF_DAY),
            alarm.getAlarmTime().get(Calendar.MINUTE), true);


        timePickerDialog.setCancelable(true);
        timePickerDialog.setCustomTitle(getLayoutInflater().inflate(R.layout.custom_hours, null));
        timePickerDialog.show();
        }

我的问题是我不知道在哪里包含view.setIs24HourView (true)(false)。 我尝试了很多变化,但没有任何效果。 我搜索了信息,但没有成功。

【问题讨论】:

  • 您是否阅读过您正在使用的 TimePickerDialog 构造函数的文档?

标签: android dialog android-timepicker time-format


【解决方案1】:

如果您希望使用 24 小时格式的当前时间正确初始化 TimePicker,请使用以下命令:

import java.util.Calendar;

timePicker.setIs24HourView(true);
timePicker.setCurrentHour(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));

否则,由于 Android 错误,选择器将以不正确的时间开始(2 而不是 14 等)。 希望这会有所帮助

【讨论】:

  • 我的问题不是那个,但感谢您的关注。我想知道的是如何将时间选择器(TimePicker 视图、int 小时等)设置为 12 或 24 小时格式,具体取决于用户的设备。我的时间选择器在“public void onTimeSet (TimePicker view ...) 示例中声明:view.setIs24HourView (true);
  • 你的意思是用户设备上的默认时间票格式?试试这个 DateFormat.is24HourFormat(context)
  • 这是真的,Android 有 bug,code.google.com/p/android/issues/detail?id=18982 参考这个。
  • 不是 TimePickerDialog 而不是 TimePicker....这个答案建议的是 TimePicker,而不是 TimePickerDialog
【解决方案2】:

如果您想在 TimePickerDialog 中使用 24 小时格式,您需要将正确的值传递给 TimePickerDialog 的构造函数。您可以查看此类here 的文档。您可以看到两个构造函数都接受boolean is24HourView 标志,我们用它来决定我们是否希望我们的对话采用 24 小时格式。如果您希望您的应用时间以与您的系统相同的方式运行,您可以使用以下行获取 24 小时格式的系统设置:DateFormat.is24HourFormat(context),这样您就可以在构造函数中传递该值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    相关资源
    最近更新 更多