CarUiRecyclerView को पसंद के मुताबिक बनाएं

इस पेज पर,CarUiRecyclerView और स्क्रोल को पसंद के मुताबिक बनाने की प्रोसेस के बारे में बताया गया है बार.

ज़रूरी शर्तें

यह पेज, रनटाइम रिसॉर्स ओवरले (आरआरओ) टारगेट APK की जानकारी का इस्तेमाल करता है. सीखने में ज़्यादा जानने के लिए, ऐप्लिकेशन को पसंद के मुताबिक बनाना देखें.

CarUiRecyclerView के बारे में जानकारी

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

CarUiRecyclerView, डेटा दिखाने के लिए किसी भी अडैप्टर का इस्तेमाल कर सकता है. हालांकि, सुझाव है कि CarUiListItemAdapter का इस्तेमाल करें जहां चेसिस लिब सूची आइटम का लेआउट है. इसलिए, इसे OEM अपनी पसंद के मुताबिक बना सकते हैं. Listआइटम के लिए कस्टमाइज़ेशन कस्टमाइज़ेशन” में तय की गई हैं 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 कुल ऊंचाई, जो अंगूठे को मूव करने के बाउंड के बारे में बताती है.

स्क्रोलबार को पसंद के मुताबिक बनाने के लिए, OEM को इस लेआउट फ़ाइल को ओवरले करना चाहिए. ट्रैक व्यू ऐसा होना चाहिए जिन्हें सावधानी से रखा गया हो, ताकि अंगूठे में बाउंड्री का पता चल सके. RV में मौजूद सूची आइटम और ऊंचाई के आधार पर, पसंद करने के तरीके का हिसाब डाइनैमिक तौर पर लगाया जाता है व्यूहोल्डर के पास हैं.

यह लेआउट 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. अगर RRO पैकेज में ऐसे नए संसाधन इस्तेमाल किए जाते हैं जो पहले से मौजूद नहीं हैं, तो इन संसाधनों को आपके बनाए गए RRO APK में भी बताया जाना चाहिए.