我的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)
。
我尝试了很多变化,但没有任何作用。
我搜索了信息但没有成功。
答案 0 :(得分:6)
如果您希望使用24h格式的当前时间正确初始化TimePicker,请使用以下命令:
import java.util.Calendar;
timePicker.setIs24HourView(true);
timePicker.setCurrentHour(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
否则,由于Android错误,选择器将以不正确的小时(2而不是14等)开始。 希望这有帮助
答案 1 :(得分:0)
如果要在TimePickerDialog中使用24小时格式,则需要将正确的值传递给TimePickerDialog的构造函数。您可以检查此类here的文档。您会看到两个构造函数都接受boolean is24HourView
标志,通过该标志我们可以决定是否要以24小时格式显示对话框。如果希望您的应用程序时间与系统保持相同的状态,则可以使用以下行获取DateFormat.is24HourFormat(context)
的24小时格式的系统设置,这样就可以在构造函数中传递该值。