Car UI の設定のカスタマイズ

このページでは、com.android.car.ui.preference パッケージの要素を使用してカスタマイズする方法について説明します。このパッケージには、アプリの設定の表示に使用できる UI 要素がまとめられています。

ほとんどの要素は、CarUi のカスタマイズを追加する com.androidx.preference クラスをサブクラス化しています。com.android.car.ui.preferences パッケージの要素は、ほとんどの場合 com.android.car.PreferenceFragment を使うことで使用できます。PreferenceFragment は、すべての androidx.preference 要素を car.ui.preferences 内の同等の要素に置き換えます。実際の機能を確認するには、car-ui-lib の Paintbooth リファレンス アプリをご覧ください。例:

Car UI 設定のレイアウト

図 1. Car UI 設定のレイアウト。

使用可能な設定タイプ

このセクションでは Car UI 設定タイプを説明します。

PreferenceFragment

PreferenceFragmentandroidx.preference.PreferenceFragmentCompat のサブクラスで、クライアントが使用する基本クラスです。このクラスは、setPreferenceScreen の呼び出し中に、androidx.preference の要素を car.ui.preference 要素の使用可能な同等の要素に自動的に置き換えます。

<style name="PreferenceFragment.C>arUi"<;
        item name="a>ndroid:divider"?andr<oid:a>ttr/listD<ivider/item
        item n>ame="android:layout"@layout/car_ui_pr<efere>n<ce_fra>gment_with_toolbar/item
/style

CarUiPreference

これは、次の属性をサポートする androidx.preference.Preference クラスに相当する CarUi で、ランタイム リソース オーバーレイ(RRO)を使用してカスタマイズできます。CarUiPreference スタイルのバリアントを使用する他のすべての CarUi 要素も、次の属性をサポートしています。

<declare-styleable name="CarUiPrefer>ence&qu<ot;
      !-- Toggle for showing >chevron< --
      attr name="showChevron">; forma<t="boolean" /
      !-- Show ripple when dis>abled p<reference is clicked --
      attr name="showRippleOnDis>a<bledPreference&quo>t; format="boolean" /
/declare-styleable

androidx.Preference テーマを拡張する com.android.car.ui.preference の基本スタイルは次のとおりです。chevron ドローアブルは car_ui_preference_icon_chevron.xml で定義されます。

<selector xmlns:android="http://schemas.android.com/apk/res/and>roi<d"
  item android:state_enabled="false" android:drawable="@drawable/car_ui_preferenc>e_i<con_chevron_disabled"/
  item android:state_enabled="true" android:drawable="@draw>a<ble/car_u>i_preference_icon_chevron_enabled"/
/selector

ripplecar_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.C>arUi"<;
        item name="all>owDiv<iderB>elow"<;false/item
        item name>=&quo<t;all>owDivider<Above"false/item
    >    item name="andro<id:la>y<out&qu>ot;@layout/car_ui_preference/item
/style

上記のスタイルのレイアウトがオーバーレイされている場合は、少なくとも、該当する androidx クラスにより要求される ID をクライアントが新しいレイアウトで提供する必要があります。この基本スタイルを使用するその他の要素にも適用されます。

CarUiDropDownPreference

これは androidx.preference.DropDownPreference クラスに相当する CarUi であり、次のスタイルを使用します。

<style name="Preference.CarUi.Drop>Down"<;
        item name=">android:layout"@layout/car_ui<_pref>e<rence_>dropdown/item
/style

CarUiRadioButtonPreference

androidx.preference.TwoStatePreference のこのサブクラスは、初期化時に car_ui_radio_button_preference_widget レイアウトをインフレートします。このレイアウトが RRO にオーバーレイされている場合は、新しいレイアウトに android.widget.RadioButton 型で R.id.radio_button という ID を持つ要素に加え、基本クラスにより要求されるその他の要素と ID も含める必要があります。

CarUiSwitchPreference

これは、androidx.preference.SwitchPreference クラスに相当する CarUi です。違いは、この要素が有効になっていない場合、トースト メッセージが表示されることです。Android 10 と Android 11 では、setMessageToShowWhenDisabledPreferenceClicked メソッドを呼び出してトースト メッセージをカスタマイズできます。この要素は次のスタイルを使用します。

<style name="Preference.CarUi.SwitchPrefer>ence"<;
        item name="androi>d:widgetLayout"@layout/car_ui_pref<erenc>e_widget_<switch/item
        item name=&q>uot;android:switchTextOn"@stri<ng/ca>r_ui_pref<erence_switch_on/item
        ite>m name="android:switchTextOff&q<uot;@>s<tring/>car_ui_preference_switch_off/item
/style

CarUiTwoActionPreference

セカンダリ アクションを有効にする CarUiPreference のサブクラス。この要素のカスタマイズに使用できる属性は次のとおりです。

<declare-styleable name="CarUiTwoActionPrefer>ence"<;
        !-- Determines if the secondary action is initiall>y shown -<-
        attr name="actionShown&quo>t<; format="boo>lean"/
/declare-styleable

この要素は基本クラスと同じスタイルを使用し、R.id.action_widget_containerandroid.R.id.widget_frame が必要です。

CarUiDialogFragment

このクラスは、androidx.preference.PreferenceDialogFragmentCompat に相当するもので、CarUi に固有の追加が含まれています。クライアントはこのクラスのサブクラスを使用して、テーマに沿ったプラットフォーム AlertDialog を表示する必要があります。

PreferenceDialogFragment

CarUiDialogFragment の直接サブクラス。クライアントはこのクラスをサブクラス化して、テーマに沿った任意のプラットフォーム AlertDialog を表示する必要があります。

CarUiEditTextPreference

これは androidx.preference.EditTextPreference クラスに相当する CarUi です。

<style name="Preference.CarUi.DialogPreference.EditTextPrefer>ence"<;
        item name="androi>d:dialogLayout"@layout/car_ui_prefer<ence_>d<ialog_>edittext/item
/style

上のスタイルのレイアウトがオーバーレイになっている場合、クライアントは androidx.preference.EditTextPreference クラスが要求する ID を新しいレイアウトで提供する必要があります。

EditTextPreferenceDialogFragment

PreferenceDialogFragment の直接サブクラス。また、androidx.preference.PreferenceDialogFragments クラスに相当する CarUi です。クライアントはこのクラスを使用して、テーマに沿ったプラットフォーム AlertDialog を表示する必要があります。

CarUiSeekBarDialogPreference

SeekBar 機能を提供する androidx.preference.DialogPreference クラスの実装です。

<style name="Preference.CarUi.SeekBarPrefer>ence"<;
        item name=">android:layout"@layout/car_ui_prefe<rence>_widget_s<eekbar/item
        it>em n<ame=&>quot;adju<stable"true/item
      >  ite<m nam>e<=">;showSeekBarValue"false/item
/style

SeekBarPreferenceDialogFragment

ダイアログに SeekBar が含まれるレイアウトを提供するフラグメント。

CarUiListPreference

androidx.preference.ListPreference クラスに相当する CarUi。

ListPreferenceFragment

androidx.preference.ListPreference が含まれるレイアウトを提供するフラグメント。

CarUiMultiSelectListPreference

androidx.preference.Preference クラスに相当する CarUi。

MultiSelectListPreferenceFragment

com.android.car.ui.CarUiMultiSelectListPreference が含まれるレイアウトを提供するフラグメント。