Android TimePicker在横向模式下显示效果不佳

时间:2016-02-18 23:02:38

标签: android api mobile landscape timepicker

我目前正在构建一个针对API 23的应用,其API API最低。 我遇到的问题是在AlertDialog中显示TimePicker。在Nexus 5 API< = 22上启动应用程序时,在纵向模式和横向模式下,显示效果很好。但是,在Nexus 5 API 23上启动应用程序时,横向模式无法正确显示TimePicker小部件,它仅显示其背景颜色。

3 个答案:

答案 0 :(得分:6)

您必须从时间选择器对话框中删除设置标题,之后您将在Nexus 5中看到时间选择器对话。此问题发布在Google论坛上,请参阅以下链接:

https://code.google.com/p/android/issues/detail?id=201766

 TimePickerDialog mTimePicker;

        String[] time = txtTimeWriteOut.getText().toString().trim().split(":");
        int hour = Integer.parseInt(time[0]);
        int minute = Integer.parseInt(time[1]);

        mTimePicker = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {

                txtTimeWriteOut.setText(TimeUtils.getDoubleDigits(selectedHour) + ":" + TimeUtils.getDoubleDigits(selectedMinute));

                passTimeOut = currentDate + TimeUtils.getDoubleDigits(selectedHour) + TimeUtils.getDoubleDigits(selectedMinute) + "00";

            }
        }, hour, minute, true);

//        mTimePicker.setTitle("Select Time");
        mTimePicker.show();

答案 1 :(得分:1)

我有这个问题。 这对我有帮助:

timePicker.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

答案 2 :(得分:1)

1。如果你不关心在对话框中丢失标题:

如果您严格遵循official documentation on Pickers,则必须使用onCreateDialog()方法执行以下操作:

不是创建TimePickerDialog的新实例并立即返回,而是在返回之前调用setTitle(null),如下所示:

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

    /* ... */

    Dialog dialogFragment = new TimePickerDialog(/* ... */);
    dialogFragment.setTitle(null);
    return dialogFragment;
}

我想指出,Android 5.0.2(Lollipop)上没有出现此问题。默认情况下,对话框没有标题。

Android 6.0设备上出现此问题。它显示了与标题完全相同的对话框。

2。如果在对话框上有标题是必须的:

您应该阅读TimePickerDialog的源代码。别无他法。 我没有在源代码上使用完全愤怒模式,因为我可以将其设置为null

我相信你可以找到包私有类AlertController的私有方法setupTitle()非常有趣。 AlertControler用于AlertDialog业务逻辑。