我在布局中创建了一个 TimePicker,我希望它以 24 小时格式显示时间。
你能帮助我吗?谢谢。
TimePicker
是用于选择一天中时间的视图,可选择 24 小时或 AM/PM 模式。您可以将setIs24HourView(true)
方法与TimePicker 一起使用。
默认设置TimePicker
为 24 小时模式并不总是一个好主意,因为许多国家/地区有不同的约定。对于这种情况,使用DateFormat.is24HourFormat(getActivity())
.
您的最终代码可能看起来像picker.setIs24HourView(DateFormat.is24HourFormat(this));
.
更多详情见:
如果您希望使用 24 小时格式的当前时间正确初始化 TimePicker,请使用以下命令:
import java.util.Calendar;
timePicker.setIs24HourView(true);
timePicker.setCurrentHour(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
否则,由于 Android 错误,选择器将以不正确的小时开始(2 而不是 14 等)。
您只需要在充气后从视图中检索 TimePicker 实例,然后您就可以修改小部件。
ID 是任意的:
View v=getActivity().getLayoutInflater().inflate(R.layout.dialog_time, null);
TimePicker timePicker=(TimePicker)v.findViewById(R.id.dialog_time_timePicker);
timePicker.setIs24HourView(true);
xml
<TimePicker
android:layout_width="300dp"
android:layout_height="300dp"
android:id="@+id/timePicker" />
爪哇
TimePicker timePicker = (TimePicker) findViewById(R.id.timePicker);
timePicker.setIs24HourView(true);
默认情况下,它以 AM/PM 格式显示时间。如果要更改 24 小时格式的时间,则可以使用 setIs24HourView() 方法。请参阅此链接:http ://www.androidaspect.com/2012/06/timepicker-view-tutorial.html
我需要相同的应用程序来设置执行任务的持续时间。我发现我只需要扩展 TimePickerDialog 类,并在最后一个构造函数参数 boolean is24HourView 中传递 True。
public class DurationPickerDialog extends TimePickerDialog {
public DurationPickerDialog(Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute){
super(context, callBack, hourOfDay, minute, true);
}
然后你只需要将它创建为
TimePickerDialog durationPicker = new DurationPickerDialog(getActivity(), this, hour, minute);
durationPicker.setTitle("Duration:");
您只需要调用并将true发送到setIs24HourView函数。
TimePicker tpHourMin = (TimePicker) findViewById(R.id.timePicker);
tpHourMin.setIs24HourView(true);
正如一些人已经提到的,只需将参数设置为 true 或 false。
timePicker.setIs24HourView(true);
您可以从这里 http://www.ahotbrew.com/android-timepicker-example/找到包含源代码的完整示例下载
或者您让用户自己决定他想使用哪种格式。
在您的 MainActivity 中:
DialogFragment timePicker = new TimePickerFragment();
timePicker.show(getSupportFragmentManager(), "time picker");
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
TextView outputText= (TextView)findViewById(R.id.outputText);
outputText.setText(hourOfDay + " : "+ minute);
}
在一个新的 Java 类(TimePickerFragment)中:
public class TimePickerFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(),(TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, android.text.format.DateFormat.is24HourFormat(getActivity()));
}}
对于时间选择器对话框
Timepicker 对话框由 android 提供以选择时间。
Java 通过在 TimePickerDialog 构造函数中传递 is24HourView == true 来提供默认功能。
public TimePickerDialog(Context context, OnTimeSetListener listener, int hourOfDay, int minute,boolean is24HourView) {
this(context, 0, listener, hourOfDay, minute, is24HourView);
}
传递 true 24 小时或传递 false 以设置 AM-PM 格式的时间选择器对话框。
例如:(科特林)
private fun showTimePicker() {
val cal = Calendar.getInstance()
val dialog = TimePickerDialog(this, TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute ->
Log.e("Time :","$hourOfDay:$minute")
}, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), true) //here pass true for 24hrs view else false for AM-PM(12hrs view)
dialog.show()
}