रनटाइम संसाधन ओवरले के साथ टूलबार को अनुकूलित करें

बेस लेआउट सिंहावलोकन

कार-यूआई-लिब टूलबार को car_ui_base_layout_toolbar.xml लेआउट फ़ाइल के माध्यम से अनुकूलित किया गया है। इसे *बेस लेआउट* टूलबार कहा जाता है क्योंकि इस लेआउट फ़ाइल में आईडी car_ui_base_layout_content_container के साथ एक FrameLayout होता है, जिसमें लेआउट फुलाए जाने के तुरंत बाद ऐप की सभी सामग्री शामिल होगी। यह संरचना OEM को टूलबार को स्क्रीन के शीर्ष के अलावा अन्य स्थानों पर रखने की अनुमति देती है।

संभावित लेआउट
टूलबार लेआउट 1टूलबार लेआउट 2टूलबार लेआउट 3
टूलबार लेआउट 4टूलबार लेआउट 5टूलबार लेआउट 6

car_ui_base_layout_content_container पर लेआउट पैरामीटर को बदलकर, टूलबार के लिए जगह बनाने के लिए ऐप को एक छोटे क्षेत्र में संपीड़ित किया जा सकता है। हालाँकि, कुछ अनुकूलन के लिए टूलबार को पारदर्शी और ऐप के शीर्ष पर मढ़ा जाना आवश्यक हो सकता है। इस मामले में, दृश्यों को car_ui_top/bottom/left/right_inset के साथ टैग किया जा सकता है। यदि कार-यूआई-लिब ऐसे टैग के साथ एक दृश्य का पता लगाता है, तो यह ऐप को उस दृश्य की स्थिति और आयाम बताता है, ताकि वह अपनी सामग्री को उस मात्रा में इंडेंट कर सके, लेकिन फिर भी टूलबार के नीचे की जगह में एक उचित पृष्ठभूमि रखें . उदाहरण के लिए, अधिकांश ऐप्स के CarUiRecyclerView में पहला आइटम निर्दिष्ट इनसेट के नीचे शुरू होगा, लेकिन उपयोगकर्ता द्वारा नीचे स्क्रॉल करने पर भी टूलबार के पीछे दिखाई देगा।

रोटरी समर्थन

रोटरी नियंत्रकों का समर्थन करने के लिए, बेस लेआउट में यथाशीघ्र FocusParkingView शामिल होना चाहिए। जब उपयोगकर्ता को कोई फ़ोकस दिखाई नहीं देता है तो यह दृश्य फ़ोकस हो जाता है। टूलबार को FocusParkingView में भी लपेटा जाना चाहिए, जो निर्दिष्ट करता है कि यह रोटरी नियंत्रक के लिए एक अलग नज जोन है। यदि इसे फोकसपार्किंग व्यू में लपेटा नहीं गया है, तो उपयोगकर्ता रोटरी नियंत्रक के साथ टूलबार के साथ इंटरैक्ट नहीं कर सकता है।

टैब

टूलबार टैब को या तो car_ui_toolbar_tab_item.xml या car_ui_toolbar_tab_item_flexible.xml लेआउट फ़ाइलों द्वारा अनुकूलित किया जाता है। फ़ाइलों के बीच कोई कार्यात्मक अंतर नहीं है, car_ui_toolbar_tab_flexible_layout बूलियन संसाधन निर्धारित करता है कि किसका उपयोग किया जाता है। परिणामस्वरूप, car_ui_toolbar_tab_flexible_layout false पर सेट रखने और केवल नियमित लेआउट फ़ाइल को अनुकूलित करने की अनुशंसा की जाती है।

टैब का ImageView जावा कोड में रंग car_ui_toolbar_tab_item_selector से रंगा जाएगा, इसलिए लेआउट के साथ car_ui_toolbar_tab_item_selector को अनुकूलित किया जाना चाहिए। ऐप्स अनुरोध कर सकते हैं कि उनके टैब के आइकन भी इस रंग से न रंगे जाएं।

टैब के TextView का टेक्स्ट स्वरूप या तो जावा कोड में TextAppearance.CarUi.Widget.Toolbar.Tab या TextAppearance.CarUi.Widget.Toolbar.Tab.Selected पर सेट है, इसलिए लेआउट फ़ाइल पर सेट किया गया टेक्स्ट स्वरूप लागू नहीं होगा। इन शैलियों को भी अनुकूलित किया जाना चाहिए।

MenuItems डिफ़ॉल्ट टूलबार के ऊपरी दाएं कोने में स्थित बटन हैं। वे टेक्स्ट, आइकन, आइकन और टेक्स्ट या स्विच हो सकते हैं। ये विविधताएँ car_ui_toolbar_menu_item लेआउट फ़ाइल का हिस्सा हैं, क्योंकि यदि ऐप अनुरोध करता है तो MenuItems प्रत्येक फॉर्म के बीच बदलने में सक्षम होना चाहिए।

MenuItems प्राथमिक हो सकते हैं, जो एक अलग लेआउट फ़ाइल को फुलाते हैं: car_ui_toolbar_menu_item_primary । प्राथमिक मेनूआइटम को सामान्य मेनूआइटम से दृष्टिगत रूप से अलग दिखना चाहिए, उदाहरण के लिए बॉर्डर वाले/बॉर्डर रहित बटन के माध्यम से। डिफ़ॉल्ट रूप से, car_ui_toolbar_menu_item_primary बस car_ui_toolbar_menu_item पर रीडायरेक्ट करता है, इसलिए वे समान दिखते हैं।

MenuItems सक्रिय किया जा सकता है, जो एक अन्य दृश्य स्थिति है जो इंगित करती है कि यह MenuItem टॉगल किया गया है। यह स्थिति MenuItem दृश्य पर setActivated(true) कॉल करके कार्यान्वित की जाती है, जो MenuItem के दृश्य में सभी ड्रॉएबल्स में state_activated स्थिति जोड़ती है। इस ड्रॉएबल स्थिति का जवाब रनटाइम रिसोर्स ओवरले (आरआरओ) में ड्रॉएबल चयनकर्ता के साथ दिया जा सकता है।

जब वाहन चल रहा हो तो MenuItems UX प्रतिबंधित किया जा सकता है। यूएक्स प्रतिबंधित सक्रिय की तरह ही एक और ड्रा करने योग्य स्थिति है, लेकिन इस बार राज्य को एंड्रॉइड फ्रेमवर्क के बजाय ऐप में परिभाषित किया गया है। इसका मतलब है कि state_ux_restricted विशेषता को RRO के साथ भी जोड़ा जाना चाहिए, ताकि RRO में परिभाषित विशेषता ऐप में परिभाषित विशेषता से मेल खाए।

जिन ऐप्स को खोज बार की आवश्यकता नहीं है, उनके लिए लेआउट मुद्रास्फीति प्रदर्शन को बेहतर बनाने के लिए खोज बार एक अलग car_ui_toolbar_search_view लेआउट फ़ाइल में समाहित है। car_ui_toolbar_search_view_container आईडी वाले FrameLayout में फुलाए जाने पर खोज बार शामिल होगा।