CarUiRecyclerView কাস্টমাইজ করুন

এই পৃষ্ঠাটি CarUiRecyclerView এবং স্ক্রোল বার কাস্টমাইজ করার প্রক্রিয়া বর্ণনা করে।

পূর্বশর্ত

এই পৃষ্ঠাটি রানটাইম রিসোর্স ওভারলে (RRO) টার্গেট APK এর জ্ঞান অনুমান করে। আরও জানতে, অ্যাপগুলি কাস্টমাইজ করুন দেখুন।

CarUiRecyclerView সম্পর্কে

যখন car_ui_scrollbar_enable bools.xmlfalse সেট করা হয়, তখন CarUiRecyclerView স্ক্রলবারকে স্ফীত করে না। তাতে বলা হয়েছে, শুধুমাত্র androidx.recyclerview নিচের সংজ্ঞায়িত মত কাস্টমাইজযোগ্য শৈলীর সাথে স্ফীত। যখন car_ui_scrollbar_enable true সেট করা হয়, তখন CarUiRecyclerView এর মধ্যে ইনস্টল করা স্ক্রলবার দিয়ে কন্টেইনারটিকে ফুলিয়ে দেয়। পরবর্তীতে androidx.recyclerview একই পাত্রে যোগ করা হয়।

CarUiRecyclerView ডেটা প্রদর্শনের জন্য যেকোনো অ্যাডাপ্টার নিতে পারে। কিন্তু সুপারিশ হল CarUiListItemAdapter ব্যবহার করা যেখানে চ্যাসিস lib তালিকা আইটেমগুলির জন্য বিন্যাস সংজ্ঞায়িত করে এবং তাই OEM দ্বারা কাস্টমাইজ করা যেতে পারে। ListItems-এর জন্য কাস্টমাইজেশন CarUiListItem-এর জন্য কাস্টমাইজেশন বিকল্পগুলিতে সংজ্ঞায়িত করা হয়েছে।

ডিফল্টরূপে, car_ui_scrollbar_margin স্ক্রলবার ভিউয়ের প্রস্থ হিসাবে ব্যবহৃত হয়। এই মার্জিনটিকে CarUiRecyclerView-এর android:endMargin হিসাবেও যোগ করা হয়েছে যাতে ডেটার শুরু এবং শেষে সমান মার্জিন থাকে। ডেভেলপার যদি enableDivider=true ব্যবহার করে থাকে তাহলে ই এম নিয়ন্ত্রণ করতে পারে কিভাবে ডিভাইডারগুলি প্রদর্শিত হবে। 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 রিসাইক্লার ভিউ (RV) এ তালিকা আইটেমের সংখ্যার উপর নির্ভর করে উচ্চতা গতিশীলভাবে গণনা করা হয়।
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. RRO দ্বারা ওভারলেড করা সম্পদ সংজ্ঞায়িত করতে, 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-এও সংজ্ঞায়িত করা উচিত।