रनटाइम रिसॉर्स ओवरले की मदद से, टूलबार को पसंद के मुताबिक बनाएं

बुनियादी लेआउट की खास जानकारी

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

संभावित लेआउट
टूलबार का लेआउट 1 टूलबार का दूसरा लेआउट टूलबार का लेआउट 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 बूलियन रिसॉर्स तय करता है कि किस फ़ाइल का इस्तेमाल किया जाए. इसलिए, हमारा सुझाव है कि car_ui_toolbar_tab_flexible_layout को false पर सेट रखें और सिर्फ़ सामान्य लेआउट फ़ाइल को पसंद के मुताबिक बनाएं.

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

टैब के TextView का टेक्स्ट दिखने का तरीका, Java कोड में 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 व्यू पर setActivated(true) को कॉल किया जाता है. इससे MenuItem के व्यू में मौजूद सभी ड्रॉबल में state_activated स्थिति जुड़ जाती है. इस ड्रॉबल स्टेटस का जवाब, रनटाइम रिसोर्स ओवरले (आरआरओ) में ड्रॉबल सिलेक्टर की मदद से दिया जा सकता है.

गाड़ी चलने के दौरान, MenuItems पर यूज़र इंटरफ़ेस (यूआई) से जुड़ी पाबंदी लगाई जा सकती है. यूज़र एक्सपीरियंस पर पाबंदी, चालू है जैसी ही एक और ड्रॉबल स्टेटस है. हालांकि, इस बार इस स्टेटस को Android फ़्रेमवर्क के बजाय ऐप्लिकेशन में तय किया गया है. इसका मतलब है कि state_ux_restricted एट्रिब्यूट को आरआरओ के साथ भी ओवरले किया जाना चाहिए, ताकि आरआरओ में तय किया गया एट्रिब्यूट, ऐप्लिकेशन में तय किए गए एट्रिब्यूट से मेल खा सके.

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