我有一个类extends DialogFragment
和这个班级里面我正在使用TimePickerDialog
。
时间选择器工作,但问题是有时CANCEL
和OK
按钮不显示,如下图所示。
按钮工作但不可见。
这是用于时间选择器的代码。
public static class TimePickerFragment extends android.support.v4.app.DialogFragment
implements TimePickerDialog.OnTimeSetListener {
// String used to set both Start and end times
String startEndTime;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
Bundle b = getArguments();
if (b != null) {
startEndTime = b.getString("startEndTime");
}
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// Do something with the time chosen by the user
switch (startEndTime) {
case "startTime":
break;
case "endTime":
break;
default:
break;
}
}
}
public void showTimePickerDialog(String startEndTime) {
TimePickerFragment timePickerFragment = new TimePickerFragment();
Bundle b = new Bundle();
b.putString("startEndTime", startEndTime);
timePickerFragment.setArguments(b);
timePickerFragment.show(context.getSupportFragmentManager(), "timePicker");
}
我解决了这个问题,我认为由于某些原因,按钮的字体颜色有时显示为白色,不知道为什么。
为了解决这个问题,我在TimePickerDialog中添加了一个对话框主题来设置按钮文本颜色。
这是我添加到styles.xml的xml代码
<style name="MyTimePickerDialogTheme" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="android:textColor">@color/colorAccent</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
这是我改变的代码。
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
Bundle b = getArguments();
if (b != null) {
startEndTime = b.getString("startEndTime");
}
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), R.style.MyTimePickerDialogTheme, this, hour, minute, DateFormat.is24HourFormat(getActivity()));
}