2017-02-25 10 views
2

横長モードのPreferenceScreenのTimePickerDialogウィジェットが小さすぎます。 screenshot横長モードのTimePickerDialogウィジェット(PreferenceScreen)

Iは、これらの指示に従って、両方のアプローチ(PreferenceActivityとPreferenceFragments)を試してみました:TimePicker in PreferenceScreen

timepickerタイトルを使用する場合TimePickerDialogレイアウトは、風景モードでは空です。だから私はタイトルを無効にしました。 PreferenceActivityバージョンでは、私はsetDialogTitle("");をTimePreferenceに追加しました。 PreferenceFragmentCompatバージョンでは、私はTimePreferenceに次のコードを追加しました:両方のバージョンでは

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

、クロックは風景の中に提示したが、ウィジェットが小さすぎています。 (PreferenceScreenの外のタイトルなしでtimepickerdialogsを使用すると、小さすぎるウィジェットに問題はありません)

PreferenceScreenでTimePickerを実装する方法はありますか。横長モードでレイアウトはOKですか?

答えて

1

モトローラMoto G5 Plus携帯電話、Android 7、風景モードで同じ問題が発生しました。ポートレートはOKです。ログ出力からは、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コントロールが削除されますが、これは多くのアプリにとって最良の選択ではありません。スクロールビューでタイムピッカーをラップすることも最適ではありません。

私は2つのXML TimePickerレイアウトを作成しました.1つはandroid:timePickerMode="spinner"、もう1つは "clock"です。クロックレイアウトは、使用可能な画面の高さ(「h360dp」)のリソース修飾子(フォルダ名のサフィックス)を使用して選択されます。画面上のUIコントロールを除いた、現在の方向でのデバイスの使用可能な画面の高さが360dpを超えている場合にのみ時計が表示されるようにします。どちらも最適ではありませんが、機能します。

編集2: 以下に説明する方法が優れています。テストされ、Android 4から7までの実際のデバイスで動作します。TimePickerダイアログは、横向きで正しく表示されています。

手順は以下のとおりです。

  • 好みのxmlファイルに一般的なPreference項目を含める
  • この設定をクリックするとonPreferenceTreeClick()
  • を使用して、この好みにクリックリスナを設定し
  • 、定期的に表示し(互換性ライブラリではありません)TimePickerDialog 'Pickers'ガイドに記載されているようなものhttps://developer.android.com/guide/topics/ui/controls/pickers.html
  • TimePickerで設定した時間をSharedPreferences

私はStackOverflowの上ここに関与するすべてのコードファイルのコード例を置く:Appcompatactivity with custom native (not compatibility) dialogpreference containing a TimePicker

関連する問題