কোডটিতে রিসাইক্লারভিউয়ের জন্য স্ক্রোলবারগুলি সক্ষম করার কোনও উপায় আছে কি?


105

যেমনটি আমরা দেখেছি, রিসাইক্লারভিউ তালিকাভুজের চেয়ে বেশি কার্যকর, তাই আমি এটি আমার প্রকল্পে ব্যবহার করতে পছন্দ করি। তবে সম্প্রতি এটি আমার কাস্টম ভিউগ্রুপে রাখার সময় আমার একটি সমস্যা হয়েছে। রিসাইক্লারভিউ এক্সএমএলে স্ক্রোলবারগুলি সেট করা সহজ:

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

তবে সত্যিই আমি রিসাইক্লার ভিউর জন্য কোডে স্ক্রোলবার সেট করার কোনও পদ্ধতি খুঁজে পাচ্ছি না, আমি যা চেষ্টা করেছি তা হ'ল:

mRecyclerView.setVerticalScrollBarEnabled(true);

এবং তারপর আমি দেখেছি এই Android এর নথিতে।

তাই আমি আমার নিজের লেআউটম্যানেজারটি তৈরি করার চেষ্টা করেছি এবং আমার যে ক্রিয়াগুলি আমার প্রয়োজন বলে মনে হয়েছে সেগুলি ওভাররাইড করে। তবে শেষ পর্যন্ত আমি ব্যর্থ হয়েছি। সুতরাং যে কেউ আমাকে কীভাবে আমার নিজের লেআউটম্যানেজার তৈরি করতে হবে বা আমাকে অন্য কোনও সমাধান দেখায় তা বলতে পারেন। ধন্যবাদ!

উত্তর:


125

এই মুহুর্তে প্রোগ্রামগুলি স্ক্রোল বারগুলি সক্ষম করা অসম্ভব বলে মনে হচ্ছে। যে আচরণের জন্য কারণ অ্যানড্রইড কল না পারেন হয় View.initializeScrollbarsInternal(TypedArray a)বা View.initializeScrollbars(TypedArray a)। উভয় পদ্ধতি কেবল তখনই ডাকা হয় যদি আপনি কোনও অ্যাট্রিবিউটসেট দিয়ে আপনার পুনর্ব্যবহারযোগ্য ভিউ ইনস্ট্যান্ট করেন।
কার্যকারণ হিসাবে আমি আপনাকে পরামর্শ দেব, আপনি কেবল আপনার পুনর্ব্যবহারযোগ্য ভিউ দিয়ে একটি নতুন লেআউট ফাইল তৈরি করুন: vertical_recycler_view.xml

<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />

এখন আপনি যেখানেই চান স্ক্রোলবারগুলির সাথে রিসাইক্লারভিউ স্ফীত করতে এবং যুক্ত করতে পারেন: MyCustomViewGroup.java

public class MyCustomViewGroup extends FrameLayout
{
    public MyCustomViewGroup(Context context)
    {
        super(context);

        RecyclerView verticalRecyclerView = (RecyclerView) LayoutInflater.from(context).inflate(R.layout.vertical_recycler_view, null);
        verticalRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
        addView(verticalRecyclerView);
    }
}

3
আমি এখন এইভাবে ব্যবহার করছি, তবে কারণটি বলার জন্য সত্যই ধন্যবাদ!
কেভিন লিউ

1
এখন আপনি সহজে স্ক্রোলবার যুক্ত করতে পারেন! : এই উত্তর চেক stackoverflow.com/a/39125108/3162918
bendaf

72

এক্সএমএল লেআউটে উল্লম্ব স্ক্রোলবার সেট করুন

<android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:scrollbars="vertical" />

2
এটি কি যথেষ্ট, না আমাদেরও সেট করতে হবে android:scrollbarStyle="outsideOverlay"?
ইগোরগানাপলস্কি

1
@ ইগোরগানাপলস্কি এটি সেট করার দরকার নেই, যদি না আপনি উল্লেখ করতে চান যে আপনার স্ক্রোলবারটি ওভারলাইড হবে বা ইনসেট হবে
লিলো

2
এটি সত্যিকার অর্থে প্রশ্নের উত্তর দেয় না, যেহেতু ওপি এক্সএমএল লেআউটটি মোটেও ব্যবহার করে না এবং এই প্রোগ্রামটিমেটিকভাবে চাইত।
অ্যান্ড্রু টি।

এবং আপনার android:fadeScrollbars="true"
optionচ্ছিক

38

শুধু এক্সএমএল বৈশিষ্ট্যে

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recyclerView"
    android:scrollbars="vertical" <!-- type of scrollbar -->
    android:scrollbarThumbVertical="@android:color/darker_gray"  <!--color of scroll bar-->
    android:scrollbarSize="5dp"> <!--width of scroll bar-->

</android.support.v7.widget.RecyclerView>

কিভাবে স্ক্রোল দ্বারা রঙ সেট করতে পারেন? রিসাইক্লারভিউ.স্রোকলভিউ কলার মত = আর.সি.এলআর.সোম_আর
মার্লোনপ্যা

14

আমি এটির জন্য ব্যবহার করতে পছন্দ করব ContextThemeWrapper

প্রথমে স্টাইল.এক্সএমএল সংজ্ঞায়িত করুন:

<style name="ScrollbarRecyclerView" parent="android:Widget">
    <item name="android:scrollbars">vertical</item>
</style>

এবং তারপরে আপনি যখনই নিজের পুনর্ব্যবহারযোগ্য ব্যবহারটি শুরু করবেন ContextThemeWrapper:

RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));

7

আপনি এটি কোনও এক্সএমএল লেআউটকে স্ফীত না করেই করতে পারেন, তবে আপনাকে একটি কাস্টম থিমের বৈশিষ্ট্য এবং একটি শৈলী ঘোষণা করতে হবে:

<resources>
    <attr name="verticalRecyclerViewStyle" format="reference"/>

    <style name="VerticalRecyclerView" parent="android:Widget">
        <item name="android:scrollbars">vertical</item>
    </style>
</resources>

তারপরে আপনার থিমের শৈলীতে গুণকের মানটি সেট করুন:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="verticalRecyclerViewStyle">@style/VerticalRecyclerView</item>
</style>

এখন আপনি উল্লম্ব স্ক্রোলবারটি দিয়ে পুনর্ব্যবহারযোগ্য প্রোগ্রামটি তৈরি করতে পারেন:

RecyclerView recyclerView = new RecyclerView(context, null, R.attr.verticalRecyclerViewStyle);

1

একটি কোড ব্যবহার করুন:

<androidx.recyclerview.widget.RecyclerView
 android:id="@+id/categoryRecyclerLayout"
 android:layout_width="414dp"
 android:layout_height="652dp"
 android:scrollbars="vertical" .... />
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.