2017-02-25 90 views
2

橫向模式下PreferenceScreen中的TimePickerDialog小部件太小。 screenshot橫向模式下的TimePickerDialog小部件(PreferenceScreen)

我已經試過了,根據這些指令兩種方法(PreferenceActivity和PreferenceFragments):使用timepicker冠軍時TimePicker in PreferenceScreen

的TimePickerDialog佈局是在橫向模式下,空無一人。所以我已經禁用了標題。在PreferenceActivity版本中,我向TimePreference添加了setDialogTitle("");。在PreferenceFragmentCompat版本我已經添加以下代碼TimePreference:

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    Dialog dialog = super.onCreateDialog(savedInstanceState); 
    dialog.setTitle(""); 
    return dialog; 
} 

在這兩個版本,時鐘呈現在景觀,但小部件太小; (使用timepickerdialogs時沒有標題在PreferenceScreen之外使用timepickerdialogs時,我沒有任何問題)

任何想法如何在PreferenceScreen中實現TimePicker,以便在橫向模式下佈局合適?

回答

1

在橫向模式下,在摩托羅拉Moto G5 Plus手機上使用Android 7時出現同樣的問題。肖像是好的。在日誌輸出中,它看起來像包含timepicker的首選alertdialog垂直適配屏幕,因此在timepicker小部件的對話框內留下的垂直空間太小。可能的解決方案:

  • 在短短缺少DP的對話框中垂直空間的情況下,包裹在一個<ScrollView><TimePicker>

  • 使用XML android:scaleXandroid:scaleY屬性(How to make the TimePicker smaller)縮放TimePicker。我目前正在測試這個。

  • 將應用程序設置爲全屏/身臨其境可能會有所幫助,因爲它會增加「可用高度」。

  • 設置TimePicker小部件 '微調' 模式,android:timePickerMode="spinner"

編輯: 的scaleX,的scaleY的解決方案是功能性的,但TimePicker長相醜陋。將應用設置爲全屏將刪除屏幕UI控件,這可能不是許多應用程序的最佳選擇。在scrollview中包裝timepicker也不是最優的。

我做了兩個XML TimePicker佈局,其中一個使用android:timePickerMode="spinner",另一個使用「clock」。使用資源限定符(文件夾名稱中的後綴)爲可用屏幕高度選擇時鐘佈局:「h360dp」。因此,只有當設備的可用屏幕高度(當前方向,不包括屏幕上的UI控件)大於360dp時纔會顯示時鐘。不是最優的,但它的工作原理。

編輯2: 下面介紹的方法更好。經過測試並在Android 4至7的真實設備上運行。TimePicker對話框正確地以橫向顯示。

步驟是:

我把這裏涉及到#2的所有代碼文件的示例代碼:Appcompatactivity with custom native (not compatibility) dialogpreference containing a TimePicker