このページでは、 com.android.car.ui.preference
パッケージの要素を使用およびカスタマイズする方法について説明します。このパッケージには、アプリの設定を表示するために使用できる UI 要素が含まれています。
ほとんどの要素は、CarUi カスタマイズを追加するcom.androidx.preference
クラスのサブクラスです。ほとんどの場合、 com.android.car.PreferenceFragment
を使用して、 com.android.car.ui.preferences
パッケージの要素を使用できます。 PreferenceFragment
すべてのandroidx.preference
要素をcar.ui.preferences
内の同等の要素に置き換えます。これらの機能の動作を確認するには、car-ui-lib Paintbooth リファレンス アプリを参照してください。例えば:
図 1.車の UI 設定レイアウト。
利用可能な設定タイプ
このセクションでは、Car UI の設定タイプについて説明します。
プリファレンスフラグメント
PreferenceFragment
androidx.preference.PreferenceFragmentCompat
のサブクラスであり、クライアントが使用する必要がある基本クラスです。 setPreferenceScreen
の呼び出し中に、このクラスはandroidx.preference
の要素をcar.ui.preference
要素の利用可能な同等の要素に自動的に置き換えます。
<style name="PreferenceFragment.CarUi"> <item name="android:divider">?android:attr/listDivider</item> <item name="android:layout">@layout/car_ui_preference_fragment_with_toolbar</item> </style>
車のUIの設定
これは、CarUi に相当するandroidx.preference.Preference
クラスで、次の属性をサポートしており、ランタイム リソース オーバーレイ (RRO) を使用してカスタマイズできます。 CarUiPreference
スタイルのバリアントを使用する他のすべての CarUi 要素も、次の属性をサポートします。
<declare-styleable name="CarUiPreference"> <!-- Toggle for showing chevron --> <attr name="showChevron" format="boolean" /> <!-- Show ripple when disabled preference is clicked --> <attr name="showRippleOnDisabledPreference" format="boolean" /> </declare-styleable>
以下はcom.android.car.ui.preference
の基本スタイルであり、 androidx.Preference
テーマを拡張します。 chevron
ドローアブルはcar_ui_preference_icon_chevron.xml
で定義されています。
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/car_ui_preference_icon_chevron_disabled"/> <item android:state_enabled="true" android:drawable="@drawable/car_ui_preference_icon_chevron_enabled"/> </selector>
ripple
car_ui_recyclerview_button_ripple_background
で定義されます。
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/car_ui_ripple_color" />
<style name="Preference.CarUi"> <item name="allowDividerBelow">false</item> <item name="allowDividerAbove">false</item> <item name="android:layout">@layout/car_ui_preference</item> </style>
上記のスタイルのレイアウトがオーバーレイされている場合、クライアントは、新しいレイアウトが、対応するandroidx
クラスで予期される ID を少なくとも提供していることを確認する必要があります。これは、この基本スタイルを使用する他の要素にも当てはまります。
CarUiドロップダウン設定
これは CarUi に相当するandroidx.preference.DropDownPreference
クラスであり、次のスタイルを使用します。
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
車のUiラジオボタンの設定
androidx.preference.TwoStatePreference
のこのサブクラスは、初期化中にcar_ui_radio_button_preference_widget
レイアウトをインフレートします。このレイアウトが RRO でオーバーレイされている場合、新しいレイアウトには、ID R.id.radio_button
を持つタイプandroid.widget.RadioButton
の要素が含まれている必要があり、基本クラスに必要な他の要素と ID も含まれている必要があります。
CarUiSwitchPreference
これは、CarUi のandroidx.preference.SwitchPreference
クラスと同等です。違いは、この要素が有効になっていない場合、トースト メッセージが表示されることです。トースト メッセージは、Android 10 および Android 11 でsetMessageToShowWhenDisabledPreferenceClicked
メソッドを呼び出すことでカスタマイズできます。この要素は次のスタイルを使用します。
<style name="Preference.CarUi.SwitchPreference"> <item name="android:widgetLayout">@layout/car_ui_preference_widget_switch</item> <item name="android:switchTextOn">@string/car_ui_preference_switch_on</item> <item name="android:switchTextOff">@string/car_ui_preference_switch_off</item> </style>
CarUiTwoアクション設定
二次アクションを有効にするCarUiPreference
のサブクラス。この要素をカスタマイズするために使用できる属性を以下に示します。
<declare-styleable name="CarUiTwoActionPreference"> <!-- Determines if the secondary action is initially shown --> <attr name="actionShown" format="boolean"/> </declare-styleable>
この要素は基本クラスと同じスタイルを使用し、 R.id.action_widget_container
およびandroid.R.id.widget_frame
を必要とします。
CarUiDialogフラグメント
このクラスは、 androidx.preference.PreferenceDialogFragmentCompat
からそのまま借用され、CarUi に固有の追加がいくつか加えられています。クライアントは、テーマ別プラットフォームAlertDialog
を表示するには、このクラスのサブクラスを使用する必要があります。
PreferenceDialogFragment
CarUiDialogFragment
の直接のサブクラス。クライアントは、テーマ別プラットフォームAlertDialog
を表示するには、このクラスをサブクラス化する必要があります。
CarUiEditTextPreference
これは、CarUi に相当するandroidx.preference.EditTextPreference
クラスです。
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
上記のスタイルのレイアウトがオーバーレイされている場合、クライアントは、新しいレイアウトがandroidx.preference.EditTextPreference
クラスで予期される ID を提供していることを確認する必要があります。
EditTextPreferenceDialogFragment
PreferenceDialogFragment
の直接のサブクラス。また、CarUi に相当するandroidx.preference.PreferenceDialogFragments
クラス。クライアントは、テーマ別プラットフォームAlertDialog
を表示するためにこのクラスを使用する必要があります。
CarUiSeekバーダイアログプリファレンス
SeekBar機能を提供するandroidx.preference.DialogPreference
クラスの実装:
<style name="Preference.CarUi.SeekBarPreference"> <item name="android:layout">@layout/car_ui_preference_widget_seekbar</item> <item name="adjustable">true</item> <item name="showSeekBarValue">false</item> </style>
SeekBarPreferenceDialogFragment
ダイアログ内に SeekBar を含むレイアウトを提供するフラグメント。
CarUiListPreference
CarUi はandroidx.preference.ListPreference
クラスと同等です。
ListPreferenceFragment
androidx.preference.ListPreference
を含むレイアウトを提供するフラグメント。
CarUiMultiSelectListPreference
CarUi のandroidx.preference.Preference
クラスに相当します。
MultiSelectListPreferenceFragment
com.android.car.ui.CarUiMultiSelectListPreference
を含むレイアウトを提供するフラグメント。