Android TimePicker 在横向模式下无法很好地显示
Posted
技术标签:
【中文标题】Android TimePicker 在横向模式下无法很好地显示【英文标题】:Android TimePicker not displayed well on landscape mode 【发布时间】:2016-02-18 23:02:38 【问题描述】:我目前正在构建一个面向 API 23 的应用,最低 API 16。 我面临一个问题,即 TimePicker 在 AlertDialog 中显示。在 Nexus 5 API
在 Nexus 5 API 23(纵向)上: TimePicker on Portrait mode (API 23)
在 Nexus 5 API 23(横向)上: TimePicker on Landscape mode (API 23)
【问题讨论】:
你有什么问题? 如何解决这个显示问题?我只在 M 上面临这个问题。 【参考方案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 业务逻辑。
【讨论】:
以上是关于Android TimePicker 在横向模式下无法很好地显示的主要内容,如果未能解决你的问题,请参考以下文章