横向模式下PreferenceScreen中的TimePickerDialog小部件太小。 screenshot
我已根据以下说明尝试了这两种方法(PreferenceActivity和PreferenceFragments):TimePicker in PreferenceScreen
使用时间戳标题时,横向模式下的TimePickerDialog布局为空。所以我已经禁用了这个头衔。在PreferenceActivity版本中,我已将setDialogTitle("");
添加到TimePreference中。在PreferenceFragmentCompat版本中,我将以下代码添加到TimePreference中:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.setTitle("");
return dialog;
}
在这两个版本中,时钟以横向显示,但小部件太小; (当使用没有PreferenceScreen之外的标题的timepickerdialog时,我对小窗口小部件没有任何问题)
如何在PreferenceScreen中实现TimePicker,以便在横向模式下布局正常?
答案 0 :(得分:1)
摩托罗拉Moto G5 Plus手机Android 7在横向模式下也存在同样的问题。肖像还可以。从日志输出看起来好像alertdialog包括timepicker垂直适合屏幕,因此在timepaicker小部件的对话框内留下太少的垂直空间。可能的解决方案:
如果对话框中只有几个缺少dp的垂直空间,请将<TimePicker>
包裹在<ScrollView>
。
使用XML android:scaleX
和android:scaleY
属性(How to make the TimePicker smaller)缩小TimePicker。我目前正在测试这个。
将应用设置为全屏/身临其境可能有所帮助,因为它可以增加可用的高度&#39;
将TimePicker小部件设置为&#39; spinner&#39;模式,android:timePickerMode="spinner"
编辑: scaleX,scaleY解决方案功能齐全,但TimePicker看起来很丑陋。将应用程序设置为全屏会删除屏幕UI控件,这可能不是许多应用程序的最佳选择。在scrollview中包装timepicker也不是最佳选择。
我制作了两个XML TimePicker布局,一个用android:timePickerMode="spinner"
,另一个用&#34; clock&#34;。使用资源限定符(文件夹名称中的后缀)为可用屏幕高度选择时钟布局:&#34; h360dp&#34;。因此,仅当设备的可用屏幕高度(当前方向,不包括屏幕UI控件)大于360dp时,时钟才会显示。也不是最佳的,但它确实有效。
编辑2: 下面描述的方法更好。经过测试,适用于从Android 4到7的真实设备.TimePicker对话框以横向方式正确显示。
步骤是:
Preference
项
TimePickerDialog
如“采摘者”中描述的那样指南https://developer.android.com/guide/topics/ui/controls/pickers.html 我在Stackoverflow上放了所有涉及的代码文件的示例代码:Appcompatactivity with custom native (not compatibility) dialogpreference containing a TimePicker