Araç Kullanıcı Arayüzü tercihlerini özelleştirin

Bu sayfada, uygulamalara yönelik tercihleri ​​sunmak için kullanılabilecek kullanıcı arayüzü öğelerini içeren com.android.car.ui.preference paketindeki öğelerin nasıl kullanılacağı ve özelleştirileceği açıklanmaktadır.

Çoğu öğe, CarUi özelleştirmelerini eklediğiniz com.androidx.preference sınıflarının alt sınıflarıdır. Çoğu durumda com.android.car.ui.preferences paketindeki öğeleri com.android.car.PreferenceFragment kullanarak kullanabilirsiniz. PreferenceFragment tüm androidx.preference öğelerini car.ui.preferences dosyasındaki eşdeğerleriyle değiştirir. Bu işlevleri çalışırken görüntülemek için car-ui-lib Paintbooth referans uygulamasına bakın. Örneğin:

Araç kullanıcı arayüzü tercih düzeni

Şekil 1. Araç kullanıcı arayüzü tercih düzeni.

Mevcut tercih türleri

Bu bölümde Araç Arayüzü tercih türleri açıklanmaktadır.

Tercih Parçası

PreferenceFragment , androidx.preference.PreferenceFragmentCompat bir alt sınıfıdır ve istemcilerin kullanması gereken temel sınıftır. setPreferenceScreen çağrısı sırasında, bu sınıf otomatik olarak androidx.preference öğelerini car.ui.preference öğelerindeki mevcut eşdeğerlerle 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>

CarUi Tercihi

Bu, bir çalışma zamanı kaynak katmanı (RRO) kullanılarak özelleştirilebilen, aşağıdaki öznitelikleri destekleyen androidx.preference.Preference sınıfının CarUi eşdeğeridir. CarUiPreference stilinin bir çeşidini kullanan diğer tüm CarUi öğeleri de aşağıdaki nitelikleri 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ğıdaki, androidx.Preference temasını genişleten com.android.car.ui.preference için temel stildir. Çizilebilir chevron car_ui_preference_icon_chevron.xml dosyasında tanımlanı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 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 üst üste bindiriliyorsa, müşterilerin yeni düzenin en azından karşılık gelen androidx sınıfları tarafından beklenen kimlikleri sağladığından emin olmaları gerekir. Bu aynı zamanda 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>

CarUiRadioButtonTercih

androidx.preference.TwoStatePreference bu 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 üst üste bindiriliyorsa, yeni düzen R.id.radio_button kimliğine sahip android.widget.RadioButton türünde bir öğe içermeli ve ayrıca temel sınıfın gerektirdiği diğer öğeleri ve kimlikleri de içermelidir.

CarUiSwitchTercihi

Bu, androidx.preference.SwitchPreference sınıfının CarUi eşdeğeridir. Aradaki fark, bu öğe etkinleştirilmediğinde bir tost mesajının gösterilmesidir. Tost mesajı, Android 10 ve Android 11'de setMessageToShowWhenDisabledPreferenceClicked yöntemi çağrılarak ö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 eylemi mümkün kılan CarUiPreference bir 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 ve android.R.id.widget_frame gerektirir.

CarUiDialogFragmenti

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

TercihDialogFragmenti

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

CarUiEditTextTercih

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 stildeki düzen üst üste bindiriliyorsa, istemcilerin yeni düzenin androidx.preference.EditTextPreference sınıfı tarafından beklenen kimlikleri sağladığından emin olmaları gerekir.

DüzenleTextPreferenceDialogFragment

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 herhangi bir temalı platformu AlertDialog sunmak için bu sınıfı kullanmalıdır.

CarUiSeekBarDialogPreference

SeekBar işlevselliği 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

Bir iletişim kutusunda SeekBar içeren bir düzen sağlayan bir parça.

CarUiListTercih

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

ListeTercih Parçası

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

CarUiMultiSelectListPreference

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

MultiSelectListPreferenceFragment

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