নেস্টডস্ক্রোলভিউয়ের অভ্যন্তরে পুনর্ব্যবহারকারী ভিউ মাঝখানে স্ক্রোলটি শুরু করে


129

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

যা ঘটে তা হ'ল যখনই স্ক্রোলভিউ স্ক্রিনে প্রদর্শিত হতে পারে তার চেয়েও বেশি সারি দেখায়, ক্রিয়াকলাপটি শুরু হওয়ার সাথে সাথে নেস্টডস্ক্রোলভিউ শীর্ষ থেকে অফসেট দিয়ে শুরু হয় (চিত্র 1)। যদি স্ক্রোল ভিউতে কয়েকটি আইটেম থাকে যাতে সেগুলি একবারে দেখা যায়, এটি ঘটে না (চিত্র 2)।

আমি সমর্থন লাইব্রেরির 23.2.0 সংস্করণ ব্যবহার করছি।

চিত্র 1 : ভুল - উপরে থেকে অফসেট দিয়ে শুরু হয়

ছবি 1

চিত্র 2 : সংশোধন - পুনর্ব্যবহারযোগ্য দৃশ্যে কয়েকটি আইটেম

ছবি 2

আমি আমার লেআউট কোড নীচে আটকানো করছি:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="fill_vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

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

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="16dp"
                android:orientation="vertical">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Title:"
                    style="@style/TextAppearance.AppCompat.Caption"/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="@dimen/bodyPadding"
                    style="@style/TextAppearance.AppCompat.Body1"
                    android:text="Neque porro quisquam est qui dolorem ipsum"/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Subtitle:"
                    style="@style/TextAppearance.AppCompat.Caption"/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    style="@style/TextAppearance.AppCompat.Body1"
                    android:padding="@dimen/bodyPadding"
                    android:text="Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."/>

            </LinearLayout>

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

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

আমি কিছু অনুপস্থিত করছি? কীভাবে এটি ঠিক করা যায় কারও কি ধারণা আছে?

আপডেট 1

আমার ক্রিয়াকলাপ সূচনা করার সময় আমি যদি নিম্নলিখিত কোডটি রাখি তবে এটি সঠিকভাবে কাজ করে:

sv.post(new Runnable() {
        @Override
        public void run() {
            sv.scrollTo(0,0);
        }
});

যেখানে এসভি হ'ল নেস্টেডস্ক্রোলভিউর একটি উল্লেখ, তবে এটি বেশ হ্যাকের মতো দেখাচ্ছে।

আপডেট 2

অনুরোধ হিসাবে, এখানে আমার অ্যাডাপ্টার কোড:

public abstract class ArrayAdapter<T, VH extends RecyclerView.ViewHolder>
        extends RecyclerView.Adapter<VH> {

    private List<T> mObjects;

    public ArrayAdapter(final List<T> objects) {
        mObjects = objects;
    }

    /**
     * Adds the specified object at the end of the array.
     *
     * @param object The object to add at the end of the array.
     */
    public void add(final T object) {
        mObjects.add(object);
        notifyItemInserted(getItemCount() - 1);
    }

    /**
     * Remove all elements from the list.
     */
    public void clear() {
        final int size = getItemCount();
        mObjects.clear();
        notifyItemRangeRemoved(0, size);
    }

    @Override
    public int getItemCount() {
        return mObjects.size();
    }

    public T getItem(final int position) {
        return mObjects.get(position);
    }

    public long getItemId(final int position) {
        return position;
    }

    /**
     * Returns the position of the specified item in the array.
     *
     * @param item The item to retrieve the position of.
     * @return The position of the specified item.
     */
    public int getPosition(final T item) {
        return mObjects.indexOf(item);
    }

    /**
     * Inserts the specified object at the specified index in the array.
     *
     * @param object The object to insert into the array.
     * @param index  The index at which the object must be inserted.
     */
    public void insert(final T object, int index) {
        mObjects.add(index, object);
        notifyItemInserted(index);

    }

    /**
     * Removes the specified object from the array.
     *
     * @param object The object to remove.
     */
    public void remove(T object) {
        final int position = getPosition(object);
        mObjects.remove(object);
        notifyItemRemoved(position);
    }

    /**
     * Sorts the content of this adapter using the specified comparator.
     *
     * @param comparator The comparator used to sort the objects contained in this adapter.
     */
    public void sort(Comparator<? super T> comparator) {
        Collections.sort(mObjects, comparator);
        notifyItemRangeChanged(0, getItemCount());
    }
}

এবং এখানে আমার ভিউহোল্ডার:

public class ViewHolder extends RecyclerView.ViewHolder {
    private TextView txt;
    public ViewHolder(View itemView) {
        super(itemView);
        txt = (TextView) itemView;
    }

    public void render(String text) {
        txt.setText(text);
    }
}

এবং এখানে পুনর্ব্যবহারযোগ্য ভিউয়ের প্রতিটি আইটেমের বিন্যাস (এটি ঠিক android.R.layout.simple_spinner_item- এই স্ক্রিনটি কেবল এই বাগের উদাহরণ দেখানোর জন্য):

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

সঙ্গে চেষ্টা android:focusableInTouchMode="false"জন্য RecyclerView? স্মিথটি স্পষ্টত "আপনার লেআউটটি নীচে যেতে বাধ্য করছে ... (আপনার যখন 1295 আইটেম রয়েছে তখন এটি শুরু হয়? নীচে বা প্রথম স্ক্রিনের মতো কেবল ছোট শীর্ষ অফসেট)
স্নেচস্মেম

অ্যান্ড্রয়েড সেট করুন: ক্লিপটোপ্যাডিং = আপনার নেস্টডস্ক্রোলভিউতে "সত্য"।
নটারিও

এছাড়াও: অন্য একইভাবে স্ক্রোলযোগ্য ভিউয়ের ভিতরে স্ক্রোলযোগ্য ভিউ রাখা খুব ভাল LayoutManager
নিদর্শন নয়

আপনার পরামর্শ উভয় চেষ্টা করেও দুর্ভাগ্যক্রমে কার্যকর হয়নি। @ স্নাচেমস রিসাইক্লার ভিউতে আইটেমের সংখ্যা নির্বিশেষে, অফসেট সবসময় একই থাকে। কিনা NestedScrollView ভিতরে RecyclerView স্থাপন একটি ভালো প্যাটার্ন হয়, আসলে এই একটি Google প্রকৌশলী দ্বারা বাঞ্ছনীয় হয়েছে plus.google.com/u/0/+AndroidDevelopers/posts/9kZ3SsXdT2T
Luccas কোড়িয়া

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

উত্তর:


253

আমি সেট করে এই জাতীয় সমস্যা সমাধান করেছি:

<ImageView ...
android:focusableInTouchMode="true"/>

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

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

সম্পাদনা (ওয়ারানকে ধন্যবাদ): এবং মসৃণ স্ক্রোলের জন্য সেট করতে ভুলবেন না yourRecyclerView.setNestedScrollingEnabled(false);


12
যাইহোক, আপনাকে আপনার রেসাইক্লারভিউ.সেটনেষ্টস্ট্রোকলিংএনেবলড (ভুয়া) যুক্ত করতে হবে; স্ক্রোলটি মসৃণ করতে
ওয়্যারান-

1
@ কেনজি কেবল লিনিয়ারলআউটের ভিতরে যেখানে রিসাইক্লারভিউ স্থাপন করা হয়েছে কেবল সেখানে যেতে হবে। অথবা যদি প্রথম পরিবর্তন সাহায্য না করে তবে নিজেই সেই লিনিয়ারলআউট (পুনর্ব্যবহারযোগ্য কনটেইনার) to
দিমিত্রি গাভ্রিলকো

1
@ দিমিত্রিগ্রিলকো আমার একটি সমস্যা আছে, যেখানে রিসাইক্ল ভিউ নেস্টডস্ক্রোলভিউয়ের ভিতরে রয়েছে। আমি রিসাইক্যভিউ.স্ক্রোলটোপজিশন (এক্স) ব্যবহার করতে পারি না; , এটা ঠিক কাজ করে না। আমি গত 6 দিনের মধ্যে সমস্ত কিছু চেষ্টা করেছিলাম, তবে আমি এটি পেরে উঠতে পারি। যেকোনো পরামর্শ? আমি খুব কৃতজ্ঞ হবে!
করলি

3
আপনি কেবল android:focusableInTouchMode="false"রিসাইক্লারভিউতেও সেট করতে পারেন যাতে আপনার অন্য সমস্ত মতামতের জন্য সত্য সেট করার প্রয়োজন হয় না।
আকসিয়োম

1
দিমিত্রি গ্যাভ্রিলকোর সাথে সম্মত হন, অ্যান্ড্রয়েড সেট করার পরে কাজ করেছেন: ফোকাসেবলআইনটচমোড = "সত্য" লিনিয়ারলেআউটে যা পুনর্ব্যবহারযোগ্য রয়েছে। @ অ্যাকডিয়াম অ্যান্ড্রয়েড সেটিং: ফোকাসেবলআইনটচমোড = রিসাইক্লারভিউতে "মিথ্যা" আমার পক্ষে কাজ করে না।
শেন্দ্রে কিরণ

103

আপনার LinearLayoutঅবিলম্বে NestedScrollView, android:descendantFocusabilityনিম্নলিখিত উপায়ে ব্যবহার করুন

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="10dp"
        android:descendantFocusability="blocksDescendants">

সম্পাদনা

যেহেতু তাদের বেশিরভাগ এই উত্তরটি কার্যকর পেয়েছে, সেগুলিও ব্যাখ্যা সরবরাহ করবে।

এর ব্যবহার এখানেdescendantFocusability দেওয়া আছে । আর যেমন focusableInTouchModeওভার এখানে । তাই ব্যবহার করে blocksDescendantsdescendantFocusabilityনা এটা লাভ ফোকাস সন্তানের পারবেন যখন স্পর্শ তাই অপরিকল্পিত আচরণ বন্ধ করা যেতে পারে।

হিসাবে focusInTouchModeউভয় AbsListViewএবং ডিফল্টরূপে তাদের নির্মাণকারী মধ্যে RecyclerViewপদ্ধতি কল setFocusableInTouchMode(true);, তাই এটি আপনার এক্সএমএল লেআউটে সেই বৈশিষ্ট্যটি ব্যবহার করার প্রয়োজন হয় না।

এবং NestedScrollViewনিম্নলিখিত পদ্ধতি ব্যবহার করা হয়:

private void initScrollView() {
        mScroller = ScrollerCompat.create(getContext(), null);
        setFocusable(true);
        setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
        setWillNotDraw(false);
        final ViewConfiguration configuration = ViewConfiguration.get(getContext());
        mTouchSlop = configuration.getScaledTouchSlop();
        mMinimumVelocity = configuration.getScaledMinimumFlingVelocity();
        mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();
    }

এখানে, setFocusable()পরিবর্তে পদ্ধতি ব্যবহার করা হয় setFocusableInTouchMode()। কিন্তু এই অনুযায়ী পোস্ট , focusableInTouchModeকিছু অবস্থার জন্য যদি না এড়িয়ে চলা উচিত হিসাবে এটি Android এর স্বাভাবিক আচরণ সঙ্গে ঐক্য বিরতি। একটি গেমটি এমন একটি অ্যাপ্লিকেশনের একটি ভাল উদাহরণ যা টাচ মোডের সম্পত্তিটিতে ফোকাসযোগ্যের ভাল ব্যবহার করতে পারে। গুগল ম্যাপের মতো ফুলস্ক্রিনে যদি মানচিত্রটি ব্যবহার করা হয় তবে আপনি টাচ মোডে সঠিকভাবে ফোকাসযোগ্য ব্যবহার করতে পারেন তার আরও একটি ভাল উদাহরণ।


ধন্যবাদ! এটা আমার ক্ষেত্রে কাজ করে। দুর্ভাগ্যক্রমে অ্যান্ড্রয়েড: ফোকাসেবলআইনটচমোড = "সত্য" আমার পক্ষে কাজ করে নি।
মিখাইল

1
এটি আমার পক্ষে কাজ করেছে। আমি কোডটির এই লাইনটি আমার পুনর্ব্যবহারযোগ্য দর্শনটির প্যারেন্ট ভিউতে যুক্ত করেছি (আমার ক্ষেত্রে এটি লিনিয়ারলআউট ছিল) এবং এটি একটি কবজির মতো কাজ করেছিল।
এমজার

আমি নেস্টার্ডস্ক্রোলভিউ ব্যবহার করছিলাম তার পরে লিনিয়ারলআউট যা রিসাইক্লারভিউ এবং সম্পাদনা পাঠ্য ধারণ করে। অ্যান্ড্রয়েড ব্যবহার করে স্ক্রলিং আচরণটি স্থির করা হয়েছিল: লাইনারলআউটের অভ্যন্তরে অবিন্টফোকসিবিলিটি "" ব্লকসিসডেন্টস "তবে এডিট টেক্সট ফোকাস অর্জন করতে পারে না। কোন ধারণা কি ঘটছে?
সাগর চাঁপাগেইন

@ সাগরচাপাগেইন এটি blocksDescendantsসমস্ত বংশধরের ফোকাসকে ব্লক করার সম্পত্তি । আমি নিশ্চিত নই, তবে চেষ্টা করুনbeforeDescendants
জিমিত প্যাটেল

2
@ জিমিতপেটেল আমার সমস্যাটি ব্যবহার করে সমাধান করা হয়েছেrecyclerView.setFocusable(false); nestedScrollView.requestFocus();
সাগর

16
android:descendantFocusability="blocksDescendants"

লিনিয়ারলাউট ভিতরে আমার জন্য কাজ।


6
তবে এর অর্থ কি এর অর্থ হল যে অভ্যন্তরীণ দর্শনগুলিতে ফোকাসটি ব্লক হয়ে যাবে, এবং ব্যবহারকারীরা তাদের কাছে পৌঁছাতে পারবেন না?
অ্যান্ড্রয়েড বিকাশকারী

11

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

public class DummyNestedScrollView extends NestedScrollView {
public DummyNestedScrollView(Context context) {
    super(context);
}

public DummyNestedScrollView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
}

public DummyNestedScrollView(Context context, @Nullable AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

/**
 * Fixind problem with recyclerView in nested scrollview requesting focus
 * http://stackoverflow.com/questions/36314836/recycler-view-inside-nestedscrollview-causes-scroll-to-start-in-the-middle
 * @param child
 * @param focused
 */
@Override
public void requestChildFocus(View child, View focused) {
    Log.d(getClass().getSimpleName(), "Request focus");
    //super.requestChildFocus(child, focused);

}


/**
 * http://stackoverflow.com/questions/36314836/recycler-view-inside-nestedscrollview-causes-scroll-to-start-in-the-middle
 * @param direction
 * @param previouslyFocusedRect
 * @return
 */
@Override
protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) {
    Log.d(getClass().getSimpleName(), "Request focus descendants");
    //return super.onRequestFocusInDescendants(direction, previouslyFocusedRect);
    return false;
}
}

এটি কাজ করে তবে এটি ফোকাস ধারণাটিও ভেঙে দেয় এবং আপনি সহজেই স্ক্রিনে দুটি কেন্দ্রিক ক্ষেত্রের সাথে পরিস্থিতি পেতে পারেন। সুতরাং আপনার যদি RecyclerViewধারকদের ভিতরে কোনও এডিটেক্সট না থাকে তবে এটি ব্যবহার করুন ।
আন্দ্রে চেরনোপ্রুডভ

4

আমার ক্ষেত্রে এই কোডটি আমার সমস্যার সমাধান করে

RecyclerView recyclerView = findViewById(R.id.recyclerView);
NestedScrollView nestedScrollView= findViewById(R.id.nestedScrollView);

recyclerView.setFocusable(false);
nestedScrollView.requestFocus();

//populate recyclerview here

আমার লেআউটে নেস্টডস্ক্রোলভিউ হিসাবে একটি পিতামাতৃ বিন্যাস রয়েছে যার একটি শিশু লিনিয়ারলআউট রয়েছে। লিনিয়ারআলআউটটিতে ওরিয়েন্টেশন রয়েছে "উল্লম্ব" এবং চাইল্ডস রিসাইক্লারভিউ এবং এডিট টেক্সট। উল্লেখ


2

আমার দুটি অনুমান আছে।

প্রথম: আপনার নেস্টডস্ক্রোলভিউতে এই লাইনটি লাগানোর চেষ্টা করুন

app:layout_behavior="@string/appbar_scrolling_view_behavior"

দ্বিতীয়: ব্যবহার করুন

<android.support.design.widget.CoordinatorLayout

আপনার পিতামাতার মত এই মত

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="fill_vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

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

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:orientation="vertical"
                      android:padding="16dp">

            <TextView
                style="@style/TextAppearance.AppCompat.Caption"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Title:"/>

            <TextView
                style="@style/TextAppearance.AppCompat.Body1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/bodyPadding"
                android:text="Neque porro quisquam est qui dolorem ipsum"/>

            <TextView
                style="@style/TextAppearance.AppCompat.Caption"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Subtitle:"/>

            <TextView
                style="@style/TextAppearance.AppCompat.Body1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/bodyPadding"
                android:text="Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."/>

        </LinearLayout>

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

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

আমার শেষ সম্ভাব্য সমাধান। আমি শপথ করছি :)


এবং পিতামাতার মতামত হিসাবে সমন্বয়কারী
লেআউটটি কোনওভাবেই

2

রিসাইকাল ভিউ ফোকাসের কারণে এই সমস্যাটি এসেছে।

এর আকারের স্ক্রিনের আকারটি প্রসারিত হলে স্বয়ংক্রিয়ভাবে সমস্ত ফোকাস দেখা রিসাইকেলের দিকে চলে যায়।

যোগ android:focusableInTouchMode="true"মত প্রথম ChildView করতে TextView, Buttonতাই এবং (নেই ViewGroupমত Linear, Relativeসমাধান উপরে ইত্যাদি) জানার সমস্যা কিন্তু এপিআই লেভেল 25 সমাধান প্রয়োজন এবং কাজ করে না।

শুধু আপনার ChildView এই 2 লাইন যোগ TextView, Buttonএবং তাই (নয় তারিখে ViewGroupমত Linear, Relativeইত্যাদি)

 android:focusableInTouchMode="true"
 android:focusable="true"

আমি মাত্র এপিআই 25 স্তরে এই সমস্যার মুখোমুখি হয়েছি I আমি আশা করি অন্যান্য ব্যক্তিরা এতে সময় নষ্ট করবেন না।

রিসাইকেলভিউতে স্মুথ স্ক্রোলিংয়ের জন্য এই লাইনটি যুক্ত করুন

 android:nestedScrollingEnabled="false"

তবে এটি যোগ করে কেবলমাত্র 21 লেভীর বা ততোধিক স্তরের সাথে কাজ করে। যদি আপনি চান যে 25 স্তরের নীচে মসৃণ স্ক্রোলিং কাজ করে তবে আপনার ক্লাসে এই লাইনটি যুক্ত করুন

 mList = findViewById(R.id.recycle_list);
 ViewCompat.setNestedScrollingEnabled(mList, false);

0

জাভা কোডে, আপনার পুনর্ব্যবহারযোগ্য ভিউ আরম্ভ করার পরে এবং অ্যাডাপ্টার সেট করার পরে, এই লাইনটি যুক্ত করুন:

recyclerView.setNestedScrollingEnabled(false)

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


0

আমি যেমন সাড়া দিতে দেরি করেছি তবে অন্য কারও সাহায্য করতে পারে। আপনার অ্যাপ স্তরের build.gradle এ কেবল নীচের বা উচ্চতর সংস্করণটি ব্যবহার করুন এবং সমস্যাটি সরানো হবে।

compile com.android.support:recyclerview-v7:23.2.1

0

শীর্ষে স্ক্রোল করতে, কেবল এটিকে কল করুন setcontentview:

scrollView.SmoothScrollTo(0, 0);

এটি প্রশ্নের উত্তর সরবরাহ করে না
উমর আতা

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