कार यूआई प्राथमिकताओं को अनुकूलित करें

यह पृष्ठ बताता है कि com.android.car.ui.preference पैकेज में तत्वों का उपयोग और अनुकूलन कैसे करें, जिसमें यूआई तत्व शामिल हैं जिनका उपयोग ऐप्स के लिए प्राथमिकताएं प्रस्तुत करने के लिए किया जा सकता है।

अधिकांश तत्व com.androidx.preference कक्षाओं को उपवर्गित कर रहे हैं जिनमें आप CarUi अनुकूलन जोड़ते हैं। ज्यादातर मामलों में, आप com.android.car.PreferenceFragment का उपयोग करके com.android.car.ui.preferences पैकेज में तत्वों का उपयोग कर सकते हैं। PreferenceFragment सभी androidx.preference तत्वों को car.ui.preferences में उनके समकक्षों से बदल देता है। इन कार्यात्मकताओं को क्रियान्वित करने के लिए, कार-यूआई-लिब पेंटबूथ संदर्भ ऐप देखें। उदाहरण के लिए:

कार यूआई प्राथमिकता लेआउट

चित्र 1. कार यूआई प्राथमिकता लेआउट।

उपलब्ध प्राथमिकता प्रकार

यह अनुभाग कार यूआई प्राथमिकता प्रकारों का वर्णन करता है।

वरीयता खंड

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>

CarUiPreference

यह androidx.preference.Preference क्लास का CarUi समकक्ष है जो निम्नलिखित विशेषताओं का समर्थन करता है, जिसे रनटाइम रिसोर्स ओवरले (RRO) का उपयोग करके अनुकूलित किया जा सकता है। अन्य सभी CarUi तत्व जो CarUiPreference शैली के एक प्रकार का उपयोग करते हैं, वे भी निम्नलिखित विशेषताओं का समर्थन करते हैं।

<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 कक्षाओं द्वारा अपेक्षित हैं। यह उन अन्य तत्वों पर भी लागू होता है जो इस आधार शैली का उपयोग करते हैं।

CarUiDropDownPreference

यह androidx.preference.DropDownPreference क्लास का CarUi समकक्ष है और निम्नलिखित शैली का उपयोग करता है:

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

CarUiRadio बटन वरीयता

androidx.preference.TwoStatePreference का यह उपवर्ग आरंभीकरण के दौरान car_ui_radio_button_preference_widget लेआउट को फुलाता है। यदि इस लेआउट को आरआरओ में ओवरलेड किया जा रहा है, तो नए लेआउट में आईडी R.id.radio_button के साथ android.widget.RadioButton प्रकार का एक तत्व होना चाहिए और बेस क्लास के लिए आवश्यक अन्य तत्व और आईडी भी शामिल होने चाहिए।

CarUiSwitchPreference

यह androidx.preference.SwitchPreference क्लास का CarUi समकक्ष है। अंतर यह है कि जब यह तत्व सक्षम नहीं होता है, तो एक टोस्ट संदेश दिखाया जाता है। एंड्रॉइड 10 और एंड्रॉइड 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>

CarUiTwoActionPreference

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 आवश्यकता होती है।

CarUiDialogFragment

यह वर्ग CarUi के लिए विशिष्ट कुछ अतिरिक्त के साथ androidx.preference.PreferenceDialogFragmentCompat से उधार लिया गया है । थीम आधारित प्लेटफ़ॉर्म AlertDialog प्रस्तुत करने के लिए ग्राहकों को इस वर्ग के उपवर्गों का उपयोग करना चाहिए।

PreferenceDialogFragment

CarUiDialogFragment का एक सीधा उपवर्ग। किसी भी थीम वाले प्लेटफ़ॉर्म AlertDialog प्रस्तुत करने के लिए ग्राहकों को इस वर्ग को उपवर्गित करना चाहिए।

CarUiEditTextPreference

यह androidx.preference.EditTextPreference वर्ग का CarUi समकक्ष है:

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

यदि उपरोक्त शैली में लेआउट ओवरलेड किया जा रहा है, तो ग्राहकों को यह सुनिश्चित करना होगा कि नया लेआउट androidx.preference.EditTextPreference वर्ग द्वारा अपेक्षित आईडी प्रदान करता है।

EditTextPreferenceDialogFragment

PreferenceDialogFragment का एक सीधा उपवर्ग। साथ ही, CarUi androidx.preference.PreferenceDialogFragments वर्ग के समतुल्य है। ग्राहकों को किसी भी थीम वाले प्लेटफॉर्म AlertDialog प्रस्तुत करने के लिए इस क्लास का उपयोग करना चाहिए।

CarUiSeekBarDialogPreference

androidx.preference.DialogPreference वर्ग का कार्यान्वयन, जो SeekBar कार्यक्षमता प्रदान करता है:

<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

एक टुकड़ा जो एक संवाद में सीकबार के साथ एक लेआउट प्रदान करता है।

CarUiListPreference

CarUi androidx.preference.ListPreference वर्ग के समकक्ष।

सूची वरीयता खंड

एक टुकड़ा जो androidx.preference.ListPreference के साथ एक लेआउट प्रदान करता है।

CarUiMultiSelectListPreference

CarUi androidx.preference.Preference वर्ग के समकक्ष है।

मल्टीसेलेक्टलिस्टप्रिफरेंसफ्रैगमेंट

एक टुकड़ा जो com.android.car.ui.CarUiMultiSelectListPreference के साथ एक लेआउट प्रदान करता है।