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

このページでは、 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 リファレンス アプリを参照してください。例えば:

車の UI 設定レイアウト

図 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を含むレイアウトを提供するフラグメント。