TimePickerDialog CANCEL和OK按钮不显示

问题描述 投票:3回答:1

我有一个类extends DialogFragment和这个班级里面我正在使用TimePickerDialog

时间选择器工作,但问题是有时CANCELOK按钮不显示,如下图所示。

按钮工作但不可见。

这是用于时间选择器的代码。

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");

}

enter image description here enter image description here

android
1个回答
5
投票

我解决了这个问题,我认为由于某些原因,按钮的字体颜色有时显示为白色,不知道为什么。

为了解决这个问题,我在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()));
}
© www.soinside.com 2019 - 2024. All rights reserved.