Arabanın kullanıcı arayüzü tercihlerini özelleştirin

Bu sayfada, uygulamalarla ilgili tercihleri sunmak için kullanılabilecek kullanıcı arayüzü öğelerinin de yer aldığı com.android.car.ui.preference paketindeki öğelerin nasıl kullanılacağı ve özelleştirileceği açıklanmaktadır.

Çoğu öğe, CarUi özelleştirmeleri eklediğiniz com.androidx.preference sınıflarının alt sınıfıdır. Çoğu durumda, com.android.car.PreferenceFragment öğesini kullanarak com.android.car.ui.preferences paketindeki öğeleri kullanabilirsiniz. PreferenceFragment, tüm androidx.preference öğelerini car.ui.preferences'deki eşdeğerleriyle değiştirir. Bu işlevlerin işleyiş şeklini görmek için car-ui-lib Paintbooth referans uygulamasına bakın. Örneğin:

Arabanın kullanıcı arayüzü tercihi düzeni

Şekil 1. Araba kullanıcı arayüzü tercihi düzeni.

Kullanılabilen tercih türleri

Bu bölümde, Car kullanıcı arayüzü tercih türleri açıklanmaktadır.

PreferenceFragment

PreferenceFragment, androidx.preference.PreferenceFragmentCompat öğesinin bir alt sınıfıdır ve müşterilerin kullanması gereken temel sınıftır. setPreferenceScreen çağrısı sırasında bu sınıf, androidx.preference öğelerini car.ui.preference öğelerindeki mevcut eşdeğerleriyle otomatik olarak değiştirir.

<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>

CarUiPreference

Bu, aşağıdaki özellikleri destekleyen androidx.preference.Preference sınıfının CarUi eşdeğeridir. Bu özellikler, çalışma zamanında kaynak yer paylaşımı (RRO) kullanılarak özelleştirilebilir. CarUiPreference stilinin varyantını kullanan diğer tüm CarUi öğeleri de aşağıdaki özellikleri destekler.

<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>

Aşağıda, com.android.car.ui.preference için androidx.Preference temasını genişleten temel stil verilmiştir. chevron çizilebilir öğesi car_ui_preference_icon_chevron.xml içinde tanımlanmıştır.

<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 içinde tanımlanır.

<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>

Yukarıdaki stildeki düzen yer paylaşımlı olarak oluşturuluyorsa müşterilerin yeni düzenin en azından karşılık gelen androidx sınıflarının beklediği kimlikleri sağladığından emin olması gerekir. Bu durum, bu temel stili kullanan diğer öğeler için de geçerlidir.

CarUiDropDownPreference

Bu, androidx.preference.DropDownPreference sınıfının CarUi eşdeğeridir ve aşağıdaki stili kullanır:

<style name="Preference.CarUi.DropDown">
        <item name="android:layout">@layout/car_ui_preference_dropdown</item>
</style>

CarUiRadioButtonTercihi

androidx.preference.TwoStatePreference alt sınıfı, başlatma sırasında car_ui_radio_button_preference_widget düzenini şişirir. Bu düzen bir RRO'da yer alıyorsa yeni düzen, R.id.radio_button kimlikli android.widget.RadioButton türü bir öğe içermelidir. Ayrıca, temel sınıfın gerektirdiği diğer öğeleri ve kimlikleri de içermelidir.

CarUiSwitchPreference

Bu, androidx.preference.SwitchPreference sınıfının CarUi eşdeğeridir. Aradaki fark, bu öğe etkinleştirilmediğinde bir pop-up mesaj gösterilmesidir. Android 10 ve Android 11'de setMessageToShowWhenDisabledPreferenceClicked yöntemi çağrılarak durum mesajı özelleştirilebilir. Bu öğe aşağıdaki stili kullanır:

<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>

CarUiTwoActionPreference

İkincil bir işlemi etkinleştiren CarUiPreference alt sınıfı. Bu öğeyi özelleştirmek için kullanılabilecek özellikler aşağıda verilmiştir:

<declare-styleable name="CarUiTwoActionPreference">
        <!-- Determines if the secondary action is initially shown -->
        <attr name="actionShown" format="boolean"/>
</declare-styleable>

Bu öğe, temel sınıfla aynı stili kullanır ve R.id.action_widget_container ile android.R.id.widget_frame öğelerini gerektirir.

AraçUiİletişimFragmenti

Bu sınıf, CarUi'ye özel bazı eklemelerle birlikte androidx.preference.PreferenceDialogFragmentCompat adlı sınıftan olduğu gibi ödünç alınmıştır. Müşteriler, AlertDialog temalı platformu sunmak için bu sınıfın alt sınıflarını kullanmalıdır.

PreferenceDialogFragment

CarUiDialogFragment öğesinin doğrudan bir alt sınıfı. Müşteriler, temalı bir platform sunmak için bu sınıfı alt sınıflara ayırmalıdır AlertDialog.

CarUiEdit Metin Tercihi

Bu, androidx.preference.EditTextPreference sınıfının CarUi eşdeğeridir:

<style name="Preference.CarUi.DialogPreference.EditTextPreference">
        <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item>
</style>

Yukarıdaki tarzdaki düzenin üzerine bindirildiği durumlarda istemcilerin, yeni düzenin androidx.preference.EditTextPreference sınıfı tarafından beklenen kimlikleri sağladığından emin olması gerekir.

EditTextPreferenceDialogFragment

PreferenceDialogFragment öğesinin doğrudan bir alt sınıfı. Ayrıca, androidx.preference.PreferenceDialogFragments sınıfının CarUi eşdeğeri. Müşteriler, AlertDialog temalı platformları sunmak için bu sınıfı kullanmalıdır.

CarUiSeekBarDialogPreference

SeekBar işlevini sağlayan androidx.preference.DialogPreference sınıfının bir uygulaması:

<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

İletişim kutusunda SeekBar ile düzen sağlayan bir parça.

CarUiListPreference

androidx.preference.ListPreference sınıfının CarUi eşdeğeri.

ListPreferenceFragment

İçinde androidx.preference.ListPreference bulunan bir düzen sağlayan parça.

CarUiMultiSelectListPreference

androidx.preference.Preference sınıfının CarUi eşdeğeri.

ÇokluSelectListPreferenceFragment

İçinde com.android.car.ui.CarUiMultiSelectListPreference bulunan bir düzen sağlayan bir parça.