CarUiRecyclerView को अनुकूलित करें

यह पृष्ठ CarUiRecyclerView और स्क्रॉल बार को अनुकूलित करने की प्रक्रिया का वर्णन करता है।

आवश्यक शर्तें

यह पृष्ठ रनटाइम रिसोर्स ओवरले (आरआरओ) लक्ष्य एपीके के ज्ञान का अनुमान लगाता है। अधिक जानने के लिए, ऐप्स कस्टमाइज़ करें देखें।

CarUiRecyclerView के बारे में

जब bools.xml में car_ui_scrollbar_enable false पर सेट किया जाता है, CarUiRecyclerView स्क्रॉलबार को नहीं बढ़ाता है। जैसा कि कहा गया है, केवल androidx.recyclerview अनुकूलन योग्य शैलियों के साथ फुलाया गया है जैसा कि नीचे परिभाषित किया गया है। जब car_ui_scrollbar_enable को true पर सेट किया जाता है, CarUiRecyclerView कंटेनर को उसके भीतर स्थापित स्क्रॉलबार के साथ फुलाता है। बाद में उसी कंटेनर में androidx.recyclerview भी जोड़ा गया।

CarUiRecyclerView डेटा प्रदर्शित करने के लिए कोई भी एडाप्टर ले सकता है। लेकिन अनुशंसा CarUiListItemAdapter का उपयोग करने की है जहां चेसिस lib listItems के लिए लेआउट को परिभाषित करता है और इसलिए इसे OEM द्वारा अनुकूलित किया जा सकता है। ListItems के लिए अनुकूलन को CarUiListItem के लिए अनुकूलन विकल्पों में परिभाषित किया गया है।

डिफ़ॉल्ट रूप से, car_ui_scrollbar_margin का उपयोग स्क्रॉलबार दृश्य की चौड़ाई के रूप में किया जाता है। इस मार्जिन को CarUiRecyclerView के android:endMargin के रूप में भी जोड़ा गया है ताकि डेटा के आरंभ और अंत में समान मार्जिन हो। यदि डेवलपर ने enableDivider=true उपयोग किया था तो OEM नियंत्रित कर सकता है कि डिवाइडर कैसे दिखना चाहिए। CarUiRecyclerView के लिए समायोजित किए जा सकने वाले आयाम हैं:

  <dimen name="car_ui_recyclerview_divider_height">0dp</dimen>
  <dimen name="car_ui_recyclerview_divider_start_margin">0dp</dimen>
  <dimen name="car_ui_recyclerview_divider_end_margin">0dp</dimen>
  <dimen name="car_ui_recyclerview_divider_top_margin">0dp</dimen>
  <dimen name="car_ui_recyclerview_divider_bottom_margin">0dp</dimen>

स्क्रॉल बार

CarUiRV स्क्रॉलबार के लिए लेआउट फ़ाइल को car_ui_recyclerview_scrollbar.xml में परिभाषित किया गया है। कुल मिलाकर, इन चार विचारों को दृश्य के भीतर परिभाषित किया गया है:

दृश्य
Car_ui_scrollbar_page_up स्क्रॉलबार के ऊपर बटन को परिभाषित करता है।
Car_ui_scrollbar_page_down स्क्रॉलबार के डाउन बटन को परिभाषित करता है।
Car_ui_scrollbar_thumb रीसाइक्लर व्यू (आरवी) में सूची आइटमों की संख्या के आधार पर ऊंचाई की गणना गतिशील रूप से की जाती है।
Car_ui_scrollbar_track कुल ऊंचाई जो उस सीमा को परिभाषित करती है जिसमें अंगूठा चलेगा।

स्क्रॉलबार को अनुकूलित करने के लिए ओईएम को इस लेआउट फ़ाइल को ओवरले करना चाहिए। ट्रैक दृश्य को सावधानी से रखा जाना चाहिए क्योंकि यह उस सीमा को परिभाषित करेगा जिसमें अंगूठा चलेगा। अंगूठे की ऊंचाई की गणना आरवी में सूची आइटम और दर्शकों की ऊंचाई के आधार पर गतिशील रूप से की जाती है।

यह लेआउट CarUiRV कंटेनर car_ui_recycler_view.xml में केवल तभी शामिल किया जाता है जब car_ui_scrollbar_enable true हो।

स्क्रॉलबार के लिए समायोजित किए जा सकने वाले अन्य आयाम हैं:

  <dimen name="car_ui_scrollbar_container_width">@dimen/car_ui_margin</dimen>
  <dimen name="car_ui_scrollbar_button_size">@dimen/car_ui_touch_target_width</dimen>
  <dimen name="car_ui_scrollbar_thumb_width">7dp</dimen>
  <dimen name="car_ui_scrollbar_separator_margin">16dp</dimen>
  <dimen name="car_ui_scrollbar_margin">@dimen/car_ui_margin</dimen>
  <dimen name="car_ui_scrollbar_thumb_radius">100dp</dimen>

  <item name="car_ui_button_disabled_alpha" format="float" type="dimen">0.2</item>
  <item name="car_ui_scrollbar_milliseconds_per_inch" format="float" type="dimen">150.0</item>
  <item name="car_ui_scrollbar_deceleration_times_divisor" format="float" type="dimen">0.45</item>
  <item name="car_ui_scrollbar_decelerate_interpolator_factor" format="float" type="dimen">1.8</item>

  <dimen name="car_ui_scrollbar_padding_start">0dp</dimen>
  <dimen name="car_ui_scrollbar_padding_end">0dp</dimen>

उदाहरण

उदाहरण के लिए, स्क्रीन के नीचे ऊपर और नीचे तीर दोनों को एक साथ लाने के लिए:

  1. ओवरले car_ui_recyclerview_scrollbar.xml :
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="@dimen/car_ui_margin"
        android:layout_height="match_parent"
        android:id="@+id/car_ui_scroll_bar">
    
        <!-- View height is dynamically calculated during layout. -->
        <View
            android:id="@+id/car_ui_scrollbar_thumb"
            android:layout_width="7dp"
            android:layout_height="20dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:background="@drawable/car_ui_recyclerview_scrollbar_thumb"/>
    
        <View
            android:id="@+id/car_ui_scrollbar_track"
            android:layout_width="10dp"
            android:layout_height="match_parent"
            android:layout_marginTop="10dp"
            android:layout_centerHorizontal="true"
            android:layout_above="@+id/car_ui_scrollbar_page_up"/>
    
        <ImageView
            android:id="@+id/car_ui_scrollbar_page_up"
            android:layout_width="76dp"
            android:layout_height="76dp"
            android:focusable="false"
            android:hapticFeedbackEnabled="false"
            android:src="@drawable/car_ui_recyclerview_ic_up"
            android:scaleType="centerInside"
            android:layout_centerHorizontal="true"
            android:layout_above="@+id/car_ui_scrollbar_page_down"/>
    
        <ImageView
            android:id="@+id/car_ui_scrollbar_page_down"
            android:layout_width="76dp"
            android:layout_height="76dp"
            android:focusable="false"
            android:hapticFeedbackEnabled="false"
            android:src="@drawable/car_ui_recyclerview_ic_down"
            android:scaleType="centerInside"
            android:layout_centerHorizontal="true"
          android:layout_alignParentBottom="true"/>
    </RelativeLayout>
    
  2. आरआरओ द्वारा ओवरलेड किए जाने वाले संसाधनों को परिभाषित करने के लिए, Overlays.xml जोड़ें:
    <overlay>
        <item target="id/car_ui_scroll_bar" value="@id/car_ui_scroll_bar"/>
        <item target="id/car_ui_scrollbar_thumb" value="@id/car_ui_scrollbar_thumb"/>
        <item target="id/car_ui_scrollbar_track" value="@id/car_ui_scrollbar_track"/>
        <item target="id/car_ui_scrollbar_page_up" value="@id/car_ui_scrollbar_page_up"/>
        <item target="id/car_ui_scrollbar_page_down" value="@id/car_ui_scrollbar_page_down"/>
        <item target="layout/car_ui_recyclerview_scrollbar" value="@layout/car_ui_recyclerview_scrollbar"/>
    </overlay>
    
  3. यदि ऊपर, नीचे, या अंगूठे से खींचने योग्य को अद्यतन किया जाना चाहिए, तो उन्हें भी ओवरलेड किया जाना चाहिए।
  4. यदि आरआरओ पैकेज में किसी नए संसाधन का उपयोग किया जाता है जो पहले से मौजूद नहीं है, तो इन संसाधनों को आपके द्वारा बनाए गए आरआरओ एपीके में भी परिभाषित किया जाना चाहिए।