क्या NestedScrollView
माता-पिता के लिए स्क्रॉल इवेंट को ट्रिगर करके प्रोग्राम के शीर्ष पर स्क्रॉल करने का एक तरीका है ? smoothScrollTo(x, y)
स्क्रॉल ईवेंट को नहीं सौंपता है NestedScrollingParent
।
क्या NestedScrollView
माता-पिता के लिए स्क्रॉल इवेंट को ट्रिगर करके प्रोग्राम के शीर्ष पर स्क्रॉल करने का एक तरीका है ? smoothScrollTo(x, y)
स्क्रॉल ईवेंट को नहीं सौंपता है NestedScrollingParent
।
जवाबों:
NestedScrollView.scrollTo(0, 0);
NestedScrollView.scrollTo(0, 0);
शीर्ष पर स्क्रॉल करने के लिए उपयोग करने के लिए कह रहा हूं NestedScrollView
। आपका स्वागत है।
मैं इसे करने में कामयाब रहा (एनिमेटेड स्क्रॉलिंग):
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
if (behavior != null) {
behavior.onNestedFling(coordinatorLayout, appBarLayout, null, 0, 10000, true);
}
जहां 10000
y- दिशा में वेग है।
behavior.onNestedFling(coordinator, appbar, null, 0, -params.height, true);
इसे उलटने के लिए कर सकते हैंbehavior.onNestedFling(coordinator, appbar, null, 0, params.height, true);
NestedScrollView
सभी तरह से ऊपर या नीचे स्क्रॉल करने का एक और तरीका fullScroll(direct)
फ़ंक्शन का उपयोग कर रहा है
nestedScrollView.fullScroll(View.FOCUS_DOWN);
nestedScrollView.fullScroll(View.FOCUS_UP);
NestedScrollView
एम्बर के नीचे लेआउट किया था ?
मेरे लिए कुछ भी काम नहीं किया, और मुझे नहीं पता कि यह क्यों काम किया, लेकिन यहां मेरा समाधान और समस्या है।
नेस्टेड स्क्रॉल दृश्य में पुनर्नवीनीकरण दृश्य जोड़ते समय, उस गतिविधि के लिए स्क्रीन पर पुनर्नवीनीकरण दृश्य दिखाई देता है। सभी तरह से ऊपर स्क्रॉल करने के लिए, मुझे इसका उपयोग करना पड़ा:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.details_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
ProductDescriptionAdapter adapter = new ProductDescriptionAdapter(this);
adapter.setData(mProduct.getDetails());
recyclerView.setAdapter(adapter);
NestedScrollView scrollView = (NestedScrollView) findViewById(R.id.scroll);
scrollView.getParent().requestChildFocus(scrollView, scrollView);
scrollView.getParent().requestChildFocus(scrollView, scrollView);
मुझे भी इसी तरह के परिदृश्य का सामना करना पड़ा। मेरे मामले में जब मैं नीचे स्क्रॉल करता हूं, तो FAB बटन दिखाई देता है और जब उपयोगकर्ता उस FAB बटन पर टैप करता है, तो पृष्ठ के शीर्ष पर जाना चाहिए। उसके लिए मैंने @SilentKnight उत्तर जोड़ा NestedScrollView.scrollTo(0, 0);
शीर्ष पर जाने के लिए लेकिन जो स्क्रॉल करने के लिए चिकनी एनीमेशन के लिए पर्याप्त नहीं है।
सुगम एनीमेशन के लिए मैंने @Sharj उत्तर का उपयोग किया है जो कि है, NestedScrollView.fullScroll(View.FOCUS_UP);
लेकिन फिर मेरा AppBar वहाँ दिखाई नहीं दे रहा है क्योंकि मुझे निम्नलिखित के रूप में AppBar का विस्तार करना है appBarLayout1.setExpanded(true)
। इसलिए इन तीनों का उपयोग करके मैं पृष्ठ के शीर्ष पर आसानी से जा सकता हूं।
nestedScrollView.fullScroll(View.FOCUS_UP);
nestedScrollView.scrollTo(0,0);
appBarLayout1.setExpanded(true);
आप आसानी से NestedScrollView स्तर पर स्क्रॉल नकली कर सकते हैं। आप मूल रूप से कोऑर्डिनेटर लयआउट को बताते हैं कि आपने टूलबार की ऊंचाई तक स्क्रॉल किया है।
NestedScrollView nestedScrollView = (NestedScrollView) getActivity().findViewById(R.id.your_nested_scroll_view);
int toolbarHeight = getActivity().findViewById(R.id.toolbar).getHeight();
nestedScrollView.startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL);
nestedScrollView.dispatchNestedPreScroll(0, toolbarHeight, null, null);
nestedScrollView.dispatchNestedScroll(0, 0, 0, 0, new int[]{0, -toolbarHeight});
nestedScrollView.scrollTo(0, nestedScrollView.getBottom());
आप इसे स्मूथ स्क्रॉल के लिए उपयोग कर सकते हैं।
nestedScrollView.fullScroll(View.FOCUS_UP);
nestedScrollView.smoothScrollTo(0,0);
या सामान्य स्क्रॉल के लिए
nestedScrollView.fullScroll(View.FOCUS_UP);
nestedScrollView.scrollTo(0,0);
मैंने उपरोक्त सभी प्रतिक्रियाओं की कोशिश की, कुछ भी नहीं लग रहा था, लेकिन मुझे केवल पोस्टडेलिड की आवश्यकता थी।
scrollview.postDelayed(new Runnable() {
@Override
public void run() {
listener.setAppBarExpanded(false, true); //appbar.setExpanded(expanded, animated);
scrollview.fullScroll(View.FOCUS_DOWN);
}
}, 400);
कुछ समय NestedScrollView.scrollTo(0, 0);
और scrollview.pageScroll(View.FOCUS_UP);
काम नहीं करता है
उस पर आपको उपयोग करने की आवश्यकता है fling()
और smoothScrollTo()
एक साथ
नमूना कोड
nestedScrollView.post {
nestedScrollView.fling(0)
nestedScrollView.smoothScrollTo(0, 0)
}
शीर्ष पर स्क्रॉल करने के बजाय View.scollTo (int x, int y) का उपयोग करें।
findViewById({your NestedScrollView resource id}).scrollTo(0, 0);
जब मुझे RecyclerView के साथ उपयोग किया गया तो मुझे NestedScrollView के साथ समस्या थी। इस कोड ने मेरे लिए काम किया: nestedScrollView !!। GetParent ()। RequestChildFocus (nestedScrollView, nestedScrollView);
val recyclerViewSearch = activity?.findViewById<RecyclerView>(R.id.recycler)
recyclerViewSearch.setAdapter(setAdapterSearch())
val nestedScrollView = activity?.findViewById<NestedScrollView>(R.id.bottom_sheet_Search)
nestedScrollView!!.getParent().requestChildFocus(nestedScrollView, nestedScrollView);
जब RecyclerView NestedScrollView के अंदर होता है तो मैं RecyclerView के आइटम पर स्क्रॉल करता हूं
सबसे पहले, आप चाहते हैं कि एक item height
स्क्रॉल प्राप्त करें position
।
val itemHeight =
binding.calendarRecyclerView.findViewHolderForAdapterPosition(0)!!.itemView.height
binding.nestedScrollView2.smoothScrollTo(0, position * itemHeight)