ปรับแต่งแถบเครื่องมือด้วยการซ้อนทับทรัพยากรรันไทม์

ภาพรวมโครงร่างฐาน

แถบเครื่องมือ car-ui-lib ได้รับการปรับแต่งผ่านไฟล์โครงร่าง car_ui_base_layout_toolbar.xml มันถูกเรียกว่าแถบเครื่องมือ *baselayout* เนื่องจากไฟล์เลย์เอาต์นี้มี FrameLayout ที่มีรหัส car_ui_base_layout_content_container ซึ่งจะมีเนื้อหาทั้งหมดของแอปไม่นานหลังจากที่เลย์เอาต์ขยายใหญ่ขึ้น โครงสร้างนี้ช่วยให้ OEM วางแถบเครื่องมือในตำแหน่งอื่นที่ไม่ใช่ด้านบนของหน้าจอ

เค้าโครงที่เป็นไปได้
เค้าโครงแถบเครื่องมือ 1เค้าโครงแถบเครื่องมือ 2เค้าโครงแถบเครื่องมือ 3
เค้าโครงแถบเครื่องมือ 4เค้าโครงแถบเครื่องมือ 5เค้าโครงแถบเครื่องมือ 6

ด้วยการเปลี่ยนพารามิเตอร์โครงร่างบน car_ui_base_layout_content_container แอปสามารถบีบอัดลงในพื้นที่ขนาดเล็กลงเพื่อเพิ่มพื้นที่สำหรับแถบเครื่องมือ อย่างไรก็ตาม การปรับแต่งบางอย่างอาจกำหนดให้แถบเครื่องมือมีความโปร่งใสและซ้อนทับที่ด้านบนของแอป ในกรณีนี้ คุณสามารถแท็กมุมมองด้วย car_ui_top/bottom/left/right_inset หาก car-ui-lib ตรวจพบมุมมองด้วยแท็กดังกล่าว มันจะสื่อสารตำแหน่งและขนาดของมุมมองนั้นไปยังแอป เพื่อให้สามารถเยื้องเนื้อหาเข้าด้านในด้วยจำนวนนั้น แต่ยังคงมีพื้นหลังที่เหมาะสมในพื้นที่ใต้แถบเครื่องมือ . ตัวอย่างเช่น แอพส่วนใหญ่จะมีรายการแรกใน CarUiRecyclerView เริ่มต้นที่ด้านล่างของสิ่งที่ใส่เข้าไปที่ระบุ แต่ยังคงมองเห็นได้ด้านหลังแถบเครื่องมือเมื่อผู้ใช้เลื่อนลง

รองรับโรตารี

เพื่อสนับสนุนตัวควบคุมแบบหมุน โครงร่างพื้นฐานจะต้องมี FocusParkingView โดยเร็วที่สุดในโครงร่าง มุมมองนี้คือสิ่งที่จะได้รับการโฟกัสเมื่อผู้ใช้ไม่สามารถมองเห็นโฟกัสได้ แถบเครื่องมือยังต้องรวมไว้ใน FocusParkingView ซึ่งระบุว่าเป็นโซนเขยิบแยกต่างหากสำหรับตัวควบคุมแบบหมุน หากไม่ได้รวมไว้ใน FocusParkingView ผู้ใช้จะไม่สามารถโต้ตอบกับแถบเครื่องมือด้วยตัวควบคุมแบบหมุนได้

แท็บ

แท็บแถบเครื่องมือได้รับการปรับแต่งโดยไฟล์โครงร่าง car_ui_toolbar_tab_item.xml หรือ car_ui_toolbar_tab_item_flexible.xml ไม่มีความแตกต่างในการทำงานระหว่างไฟล์ต่างๆ ทรัพยากร car_ui_toolbar_tab_flexible_layout Boolean จะเป็นตัวกำหนดว่าจะใช้ไฟล์ใด ด้วยเหตุนี้ เราจึงแนะนำให้ตั้งค่า car_ui_toolbar_tab_flexible_layout เป็น false และปรับแต่งเฉพาะไฟล์เลย์เอาต์ปกติเท่านั้น

ImageView ของแท็บจะถูกแต้มสีด้วยสี car_ui_toolbar_tab_item_selector ในโค้ด Java ดังนั้น car_ui_toolbar_tab_item_selector จะต้องปรับแต่งควบคู่ไปกับเค้าโครง แอปสามารถขอไม่ให้ไอคอนบนแท็บของตนถูกแต้มด้วยสีนี้ได้เช่นกัน

TextView ของแท็บมีการตั้งค่าลักษณะข้อความเป็น TextAppearance.CarUi.Widget.Toolbar.Tab หรือ TextAppearance.CarUi.Widget.Toolbar.Tab.Selected ในโค้ด Java ดังนั้นลักษณะที่ปรากฏของข้อความที่ตั้งค่าบนไฟล์เค้าโครงจะไม่นำไปใช้ ต้องปรับแต่งสไตล์เหล่านี้ด้วย

MenuItems คือปุ่มที่มุมขวาบนของแถบเครื่องมือเริ่มต้น อาจเป็นข้อความ ไอคอน ไอคอนและข้อความ หรือสวิตช์ รูปแบบเหล่านี้ทั้งหมดเป็นส่วนหนึ่งของไฟล์โครงร่าง car_ui_toolbar_menu_item เนื่องจาก MenuItems จะต้องสามารถเปลี่ยนแปลงระหว่างแต่ละแบบฟอร์มได้หากแอปร้องขอ

MenuItems สามารถเป็น primary ซึ่งจะทำให้ไฟล์โครงร่างอื่นขยาย: car_ui_toolbar_menu_item_primary MenuItem หลักจะต้องดูแตกต่างจาก MenuItem ปกติ เช่น ผ่านปุ่มที่มีขอบ/ไม่มีขอบ ตามค่าเริ่มต้น car_ui_toolbar_menu_item_primary เพียงเปลี่ยนเส้นทางไปที่ car_ui_toolbar_menu_item ดังนั้นจึงมีลักษณะเหมือนกัน

MenuItems สามารถ เปิดใช้งานได้ ซึ่งเป็นสถานะภาพอีกสถานะหนึ่งที่ระบุว่า MenuItem นี้ถูกสลับอยู่ สถานะนี้ถูกนำไปใช้โดยการเรียก setActivated(true) ในมุมมอง MenuItem ซึ่งจะเพิ่มสถานะ state_activated ให้กับ Drawable ทั้งหมดในมุมมองของ MenuItem สถานะ Drawable นี้สามารถตอบกลับได้ด้วยตัวเลือก Drawable ใน Runtime Resource Overlay (RRO)

MenuItems สามารถ จำกัด UX ได้ เมื่อรถกำลังเคลื่อนที่ UX ที่จำกัดนั้นเป็นเพียงสถานะที่สามารถถอนออกได้เช่น เปิดใช้งาน แต่คราวนี้สถานะถูกกำหนดไว้ในแอปแทนที่จะเป็นเฟรมเวิร์ก Android ซึ่งหมายความว่าแอตทริบิวต์ state_ux_restricted จะต้องซ้อนทับกับ RRO ด้วย เพื่อให้แอตทริบิวต์ที่กำหนดใน RRO ตรงกับแอตทริบิวต์ที่กำหนดในแอป

แถบค้นหามีอยู่ในไฟล์โครงร่าง car_ui_toolbar_search_view แยกต่างหาก เพื่อปรับปรุงประสิทธิภาพการขยายเลย์เอาต์สำหรับแอปที่ไม่ต้องใช้แถบค้นหา FrameLayout ที่มี id car_ui_toolbar_search_view_container จะมีแถบค้นหาเมื่อพองตัว