Sesuaikan toolbar dengan hamparan sumber daya runtime

Ikhtisar tata letak dasar

Toolbar car-ui-lib dikustomisasi melalui file tata letak car_ui_base_layout_toolbar.xml . Disebut toolbar *tata letak dasar* karena file tata letak ini berisi FrameLayout dengan id car_ui_base_layout_content_container , yang akan berisi semua konten aplikasi segera setelah tata letak diperluas. Struktur ini memungkinkan OEM menempatkan toolbar di lokasi selain bagian atas layar.

Kemungkinan tata letak
Tata Letak Bilah Alat 1Tata Letak Bilah Alat 2Tata Letak Bilah Alat 3
Tata Letak Bilah Alat 4Tata Letak Bilah Alat 5Tata Letak Bilah Alat 6

Dengan mengubah parameter tata letak pada car_ui_base_layout_content_container , aplikasi dapat dikompresi menjadi area yang lebih kecil untuk memberi ruang bagi toolbar. Namun, beberapa penyesuaian mungkin memerlukan toolbar transparan dan dilapis di atas aplikasi. Dalam hal ini, tampilan dapat diberi tag dengan car_ui_top/bottom/left/right_inset . Jika car-ui-lib mendeteksi tampilan dengan tag seperti itu, ia akan mengomunikasikan posisi dan dimensi tampilan tersebut ke aplikasi, sehingga dapat membuat kontennya masuk ke dalam dengan jumlah tersebut, namun tetap mempertahankan latar belakang yang masuk akal di ruang di bawah toolbar . Misalnya, sebagian besar aplikasi akan memiliki item pertama di CarUiRecyclerView yang dimulai di bawah insets yang ditentukan, namun masih terlihat di belakang toolbar saat pengguna menggulir ke bawah.

Dukungan putar

Untuk mendukung pengontrol putar, tata letak dasar harus berisi FocusParkingView sedini mungkin dalam tata letak. Tampilan inilah yang menjadi fokus ketika tidak ada fokus yang terlihat oleh pengguna. Toolbar juga harus dibungkus dengan FocusParkingView , yang menetapkan bahwa itu adalah zona dorongan terpisah untuk pengontrol putar. Jika tidak dibungkus dalam FocusParkingView, maka pengguna tidak dapat berinteraksi dengan toolbar dengan pengontrol putar.

tab

Tab toolbar disesuaikan dengan file tata letak car_ui_toolbar_tab_item.xml atau car_ui_toolbar_tab_item_flexible.xml . Tidak ada perbedaan fungsional antara file, sumber daya car_ui_toolbar_tab_flexible_layout Boolean menentukan mana yang digunakan. Oleh karena itu, disarankan untuk membiarkan car_ui_toolbar_tab_flexible_layout disetel ke false dan hanya menyesuaikan file tata letak biasa.

ImageView tab akan diwarnai dengan warna car_ui_toolbar_tab_item_selector dalam kode Java, jadi car_ui_toolbar_tab_item_selector harus disesuaikan dengan tata letaknya. Aplikasi dapat meminta agar ikon tabnya tidak diwarnai dengan warna ini juga.

TextView tab memiliki tampilan teks yang disetel ke TextAppearance.CarUi.Widget.Toolbar.Tab atau TextAppearance.CarUi.Widget.Toolbar.Tab.Selected dalam kode Java, sehingga tampilan teks yang disetel pada file tata letak tidak akan berlaku. Gaya-gaya ini juga harus disesuaikan.

MenuItems adalah tombol di sudut kanan atas toolbar default. Itu bisa berupa teks, ikon, ikon dan teks, atau sakelar. Variasi ini adalah bagian dari file tata letak car_ui_toolbar_menu_item , karena MenuItems harus dapat berubah di antara setiap formulir jika aplikasi memintanya.

MenuItems dapat berupa primary , yang mengembangkan file tata letak yang berbeda: car_ui_toolbar_menu_item_primary . MenuItem utama harus terlihat berbeda secara visual dari MenuItem normal, misalnya melalui tombol berbatas/tanpa batas. Secara default, car_ui_toolbar_menu_item_primary hanya dialihkan ke car_ui_toolbar_menu_item , sehingga terlihat sama.

MenuItems dapat diaktifkan , yang merupakan keadaan visual lain yang menunjukkan bahwa MenuItem ini diaktifkan. Status ini diimplementasikan dengan memanggil setActivated(true) pada tampilan MenuItem, yang menambahkan status state_activated ke semua drawable dalam tampilan MenuItem. Status drawable ini dapat ditanggapi dengan pemilih drawable di runtime resource overlay (RRO).

MenuItems dapat dibatasi UX saat kendaraan bergerak. Pembatasan UX hanyalah status drawable lainnya seperti activation , namun kali ini status tersebut ditentukan di aplikasi, bukan di framework Android. Artinya, atribut state_ux_restricted juga harus di-overlay dengan RRO, sehingga atribut yang ditentukan di RRO cocok dengan atribut yang ditentukan di aplikasi.

Bilah pencarian terdapat dalam file tata letak car_ui_toolbar_search_view terpisah, untuk meningkatkan kinerja inflasi tata letak untuk aplikasi yang tidak memerlukan bilah pencarian. FrameLayout dengan id car_ui_toolbar_search_view_container akan berisi bilah pencarian saat dipompa.