【问题标题】:Android TimePicker not displayed well on landscape modeAndroid TimePicker 在横向模式下无法很好地显示
【发布时间】:2023-04-04 10:04:01
【问题描述】:

我目前正在构建一个面向 API 23 的应用,最低 API 16。 我面临一个问题,即 TimePicker 在 AlertDialog 中显示。在 Nexus 5 API

【问题讨论】:

  • 你有什么问题?
  • 如何解决这个显示问题?我只在 M 上面临这个问题。

标签: android api mobile landscape timepicker


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • timePicker 大小问题。
    • 你在哪里调用这个方法?在onCreate()?
    • 是的。一段时间后,我找到了更正确的解决方案。尝试为时间选择器设置最小高度,但我不记得确切的值或在滚动视图中包装 datepicker 并设置 timePicker 高度和宽度值 wrap_content。
    • 当他的真实身高减去一些数值时,TimePicker 显示错误。也许当高度小于 495dp 位时,它并不完全是值。
    • 感谢您宝贵的cmets。我会让你知道结果如何。也许我什至会把我的答案放在这里。
    【解决方案3】:

    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 业务逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 2014-11-06
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多