নেস্টেড স্ক্রোলভিউ স্ক্রোলের অভ্যন্তরে পুনর্ব্যবহারযোগ্য কিন্তু সাধারণ পুনর্ব্যবহারযোগ্য ভিউ বা নেস্টেড স্ক্রোলভিউয়ের মতো দ্রুত স্ক্রোল করে না


96

আমি RecyclerViewভিতরে ব্যবহার করছি NestedScrollViewএবং এটি কাজ করে। তবে আমি যখন RecyclerViewভিতরে LinearLayoutবা অন্য কিছু ব্যবহার করি তখন এটি অঙ্গভঙ্গির উপর নির্ভর করে বিভিন্ন গতিতে স্ক্রোল করে। স্ক্রোলটি অঙ্গভঙ্গিতে শুনুন এবং আমি যদি কিছুটা উপরে স্লাইড করি তবে আমি যদি খুব দ্রুত স্লাইড করি তবে এটি কিছুটা স্ক্রোল করে, তবে এটি সত্যিই দ্রুত স্ক্রোল করে। এখন আমার সমস্যাটি হ'ল RecyclerViewভিতরে NestedScrollViewঅবশ্যই অবশ্যই স্ক্রোল করে তবে দ্রুত স্ক্রোলটি কাজ করে না। তবে আমি দ্রুত বা ধীর গতিতে স্লাইড RecyclerViewবা NestedScrollViewকেবল কিছুটা স্ক্রোল করছি।

আমি কীভাবে আমার NestedScrollViewবা RecyclerViewসেই স্ক্রোলের ভিউয়ের ভিতরে বিভিন্ন গতিতে স্ক্রোল তৈরি করতে পারি ?


4
রিসাইক্লারভিউ.সেটনিস্টডস্ক্রোলিংএনবলড (মিথ্যা); এটি সত্যিই কাজ করে !!
অং সি মিন হেতেট

stackoverflow.com/questions/27083091/… সমাধান এখানে পাওয়া যাবে।
maruti060385

উত্তর:


266

চেষ্টা করুন

recyclerView.setNestedScrollingEnabled(false);

14
তবে এই সেটিং দ্বারা, পুনর্ব্যবহারযোগ্য দর্শনগুলি পুনর্ব্যবহার করে না! এটা সম্পর্কে আপনার ধারণা কি?
মায়

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

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

ধন্যবাদ @ জিমিতপ্যাটেল, এই মুহূর্তে এটি আমার সমস্যা exactly নেস্টডস্ক্রোল ভিউয়ের মধ্যে আমার একটি রিসাইক্যভিউ রয়েছে এবং আমি স্ক্রোল করতে পারি না। stackoverflow.com/questions/41259756/…
করলি

4
@ ক্যারোলিকে নেস্টেড স্ক্রোলগুলি কাস্টমাইজ করতে হবে ... আমি তা ... কয়েক ঘন্টা পরে পোস্ট করব ... বর্তমানে, আমি ভ্রমণ করছি। আমি টুলবারের পরে পুনর্ব্যবহারকারী দৃশ্যের সাথে প্যারালাক্স এফেক্টে এই সমস্যার মুখোমুখি হয়েছি।
জিমিত প্যাটেল

53

গতানুগতিক setNestedScrollingEnabled কেবলমাত্র API-21 এর পরে কাজ করে।

আপনি ViewCompat.setNestedScrollingEnabled(recyclerView, false);API-21 এর আগে এবং পরে (ললিপপ) নেস্টেড স্ক্রোলিংটি অক্ষম করতে ব্যবহার করতে পারেন ।ডকুমেন্টেশনের লিঙ্ক

এই সাহায্য আশা করি!


21

আমি অ্যান্ড্রয়েড 16 এ কাজ করছিলাম যেখানে সেটনেস্টডক্রোলএইনবেলড পদ্ধতিটি ব্যবহার করা সম্ভব ছিল না,

স্ক্রোলগুলি পরিচালনা করা থেকে রিসাইক্লার ভিউ বন্ধ করার জন্য আমি কী করছি।

লাইনারলআউটআম্যানাজারের মতো আমি ক্যানস্ক্রোলহোরাইজেন্টালি তৈরি করেছি, ক্যানস্ক্রোলটি ভার্টিক্যালি ডিফল্টরূপে মিথ্যা ফেরত দিতে

myRecyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false){
            @Override
            public boolean canScrollHorizontally() {
                return false;
            }

            @Override
            public boolean canScrollVertically() {
                return false;
            }
        });

এটি আসলে আমার পক্ষে কাজ করেছিল। আমার কাছে একটি স্ক্রোলভিউয়ের ভিতরে লিনিয়ারলাইনারের ভিতরে একটি পুনর্ব্যবহারযোগ্য ভিউ ছিল।
ফোনজটেক

9

বেশ কয়েকটি পুনরাবৃত্তির পরে, আমি একটি সমাধান নিয়ে এসেছি।

  1. আপনি যদি রিসাইক্লারভিউ ব্যবহার করছেন, তবে:

    recyclerView.setNestedScrollingEnabled(false);
    
  2. যদি আপনি নেস্টডস্ক্রোলিংভিউয়ের মধ্যে লিনিয়ারলআউট ব্যবহার করছেন তবে একটি সাধারণ স্ক্রোলভিউয়ের মধ্যে লিনিয়ারলআউটটি নিয়ে যান এবং তারপরে স্ক্রোলিং সেট করুন

    scrollView.setNestedScrollingEnabled(false);
    

2

অ্যান্ড্রয়েড: ওভারস্ক্রোলমোড = "কখনই নয়

  <android.support.v4.widget.NestedScrollView
    android:id="@+id/nestedScrollView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:overScrollMode="never">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>
 </android.support.v4.widget.NestedScrollView>

1

আপনি এক্সটেনড্রেসাইক্লারভিউ ক্লাসের সাহায্যে স্ক্রোলভিউ ব্যবহার করতে পারেন যা onMeasure পদ্ধতিতে ওভাররাইড করে। সেটা আমার জন্য কাজ করে!

@Override
protected void onMeasure(int widthSpec, int heightSpec) {
    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
    super.onMeasure(widthSpec, expandSpec);
}

1
recyclerView.setNestedScrollingEnabled(false);

কখনও কখনও দরকারী হবে B তবে এটি সর্বকালের জন্য উপযুক্ত নয় b কারণ এটি পুনর্ব্যবহারযোগ্য দৃশ্যে পুনর্ব্যবহারযোগ্য বৈশিষ্ট্যটি অক্ষম করে।

বিকল্পসমূহ:

রিসাইক্লার দৃশ্যের সাথে কলাপসইটিউলবারআলআউট চেষ্টা করুন। কলাপসিসটলবার লেআউটে অন্যান্য মতামত রাখুন।


0

আমিও এই সমস্যাটি পূরণ করেছি। এবং 26.1.0এটি ঠিক করার জন্য আপগ্রেড করুন ।


-1

আমার ক্ষেত্রে আমি সমস্ত চিত্র অঙ্কনযোগ্য-এক্সএক্সএক্সএইচডিপিআই ফোল্ডারের অন্তর্নিহিত ফোল্ডারে রেখেছি যে আমার স্ক্রিনের ইউআই কেন পিছিয়ে আছে।


-3

আপনার লাইনারলআউট যেমন লেআউটে পুনর্ব্যবহারযোগ্য দৃশ্যটি মোড়ানো উচিত এবং 800dp এর মতো পুনর্ব্যবহারযোগ্য আকারটি ধ্রুবক হিসাবে সেট করা উচিত। এটি মসৃণ স্ক্রোলটি সক্ষম করবে এবং পুনর্ব্যবহারযোগ্য দৃশ্যটি এখনও স্ক্রোল চলাকালীন পুনর্ব্যবহারযোগ্য দর্শনগুলি করবে।

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
                                xmlns:app="http://schemas.android.com/apk/res-auto"
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="800dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</LinearLayout>


4
এটি একটি উত্তরের উত্তর কারণ এটি পুনর্ব্যবহারযোগ্য ভিউয়ের মূল সুবিধাটি না ভাঙিয়ে ঝাঁকুনির স্ক্রোল ইস্যুটি সংশোধন করার পথ নির্দেশ করে, কেবল দৃশ্যমান দৃশ্যগুলি লোড করে এবং যখন দৃষ্টির বাইরে স্ক্রোল করা হয় তখন তাদের পুনর্ব্যবহার করা হয়। লোকেরা এটিকে নিচে ভোট দিয়েছে কারণ 800dp এর মতো একটি নির্দিষ্ট মান সমস্ত স্ক্রিনের আকার এবং ওরিয়েন্টেশনগুলিতে কাজ করে না, তবে বিন্যাস_ উচ্চতার মান গণনা করা যেতে পারে এবং প্রোগ্রামিয়ালি সেট করা যেতে পারে - কিছুটা অগোছালো তবে এটি উভয় সমস্যার সমাধান করে।
jk7

-3

এটি ডাব্লুআইএআই নেস্টেডস্ক্রোলভিউ তার বাচ্চাদের পরিসংখ্যান "অনির্ধারিত" দিয়ে পরিমাপ করে। বাচ্চা যতটুকু চায় তেমন বাড়তে পারে।

এটি মূলত এনএসভি এবং আরভি এর উচ্চতা সমান করে। আরভি যতদূর সম্পর্কিত, এটি বিশ্বাস করে যে এটি সম্পূর্ণরূপে প্রদর্শিত হয়েছে is

আপনার আরভিটিকে একটি এলএল দিয়ে মুড়িয়ে নিন এবং আপনার আরভিকে উচ্চতা দিন। এলএল পরিমাপের বিশেষটি UNSPECIFIED হিসাবে সেট করবে না যাতে আরভি আপনার যে কোনও ডিপি সরবরাহ করে তার সেট উচ্চতার মধ্যে সঠিকভাবে স্ক্রোল করে।

এই পদ্ধতির একমাত্র ক্ষতিটি হ'ল আপনি নিজের আরভিতে কোনও ম্যাচ প্যারেন্ট করতে সক্ষম হবেন না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.