ปรับแต่งค่ากำหนด UI ของรถยนต์

หน้านี้จะอธิบายวิธีใช้และปรับแต่งองค์ประกอบใน แพ็กเกจ com.android.car.ui.preference ซึ่งมีองค์ประกอบ UI ซึ่งใช้ในการนำเสนอค่ากำหนดสำหรับแอปได้

องค์ประกอบส่วนใหญ่กำลังจัดประเภทย่อย com.androidx.preference คลาสที่คุณเพิ่ม การปรับแต่ง CarUi ในกรณีส่วนใหญ่ คุณสามารถใช้องค์ประกอบในส่วน com.android.car.ui.preferences แพ็กเกจโดยใช้ com.android.car.PreferenceFragment PreferenceFragment แทนที่ทั้งหมด องค์ประกอบ androidx.preference ที่มีค่าเทียบเท่าใน car.ui.preferences ดูฟังก์ชันการทํางานจริงได้ที่ UI ของรถยนต์ แอปอ้างอิง Paintbooth ดังตัวอย่างต่อไปนี้

เลย์เอาต์ค่ากำหนด UI ของรถยนต์

รูปที่ 1 เลย์เอาต์ค่ากำหนด UI ของรถยนต์

ประเภทค่ากำหนดที่ใช้ได้

ส่วนนี้จะอธิบายประเภทค่ากำหนด 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>

ค่ากำหนด CarUi

นี่คือ CarUi เทียบเท่ากับคลาส androidx.preference.Preference ที่ รองรับแอตทริบิวต์ต่อไปนี้ ซึ่งปรับแต่งได้โดยใช้การวางซ้อนทรัพยากรรันไทม์ (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 ชั้นเรียน ซึ่งรวมถึงองค์ประกอบอื่นๆ ที่ใช้ รูปแบบฐานนี้

ค่ากำหนด CarUiเมนูแบบเลื่อนลง

นี่คือ CarUi เทียบเท่ากับ androidx.preference.DropDownPreference และใช้รูปแบบต่อไปนี้

<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 ในระหว่าง การเริ่มต้น หากเลย์เอาต์นี้วางซ้อนอยู่ใน RRO เลย์เอาต์ใหม่จะต้อง มีองค์ประกอบประเภท android.widget.RadioButton ที่มีรหัส R.id.radio_button และต้องมีองค์ประกอบและรหัสอื่นๆ ด้วย ที่จำเป็นสำหรับคลาสพื้นฐาน

ค่ากำหนด CarUiSwitch

นี่คือ CarUi เทียบเท่ากับคลาส androidx.preference.SwitchPreference ความแตกต่างคือเมื่อไม่ได้เปิดใช้องค์ประกอบนี้ ข้อความโทสต์จะแสดงขึ้น ขนมปังปิ้ง สามารถปรับแต่งได้โดยเรียก setMessageToShowWhenDisabledPreferenceClicked วิธีใน Android 10 และ Android 11 องค์ประกอบนี้ ใช้รูปแบบต่อไปนี้

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

ค่ากำหนด CarUi แบบ 2 แบบ

คลาสย่อยของ 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

ค่ากำหนดการแก้ไขข้อความ CarUi

นี่คือ 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

EditTextPreferenceDialogFragment

คลาสย่อยโดยตรงของ PreferenceDialogFragment และ CarUi เทียบเท่ากับ ชั้นเรียน androidx.preference.PreferenceDialogFragments ลูกค้าควร ใช้ชั้นเรียนนี้เพื่อนำเสนอแพลตฟอร์มที่มีธีม AlertDialog

ค่ากำหนด CarUiSeekBarDialog

การใช้งานคลาส 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 ในกล่องโต้ตอบ

ค่ากำหนด CarUiList

CarUi เทียบเท่ากับ androidx.preference.ListPreference คลาส

ListPreferenceFragment

ส่วนย่อยที่ระบุเลย์เอาต์ที่มี androidx.preference.ListPreference อยู่ในนั้น

ค่ากำหนด CarUiMultiSelectList

คลาส CarUi เทียบเท่ากับคลาส androidx.preference.Preference

MultiSelectListPreferenceFragment

ส่วนย่อยที่ระบุเลย์เอาต์ที่มี com.android.car.ui.CarUiMultiSelectListPreference อยู่ในนั้น