2016-02-08 17 views
5

मैं recycler जो नेस्टेड स्क्रॉल दृश्य के अंदर रखा अंदर अनेक व्यू-धारक उपयोग कर रहा हूँ, वहाँ) onBindViewHolder() रेमंड नेस्टेड स्क्रॉल, getItemViewType (की वजह से देखने की प्राकृतिक व्यवहार में बदलाव का सभी आइटम अंदर कहलाते हैं onBindViewHolder() रीसाइक्लिंग एडाप्टर शुरू करते समय, उदाहरण के लिए मेरे पास 20 आइटम हैं, सामान्य परिदृश्य में केवल तीन आइटम शुरू होने पर बुलाए जाते हैं, लेकिन नेस्टेड स्क्रॉल दृश्य के मामले में सभी 20 विचार पहले लोड पर बनाते हैं।अंदर घोंसला वाले स्क्रॉलव्यू के साथ पुनर्चक्रण?

एक्सएमएल फ़ाइल

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/light_gray_vd"> 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:contentScrim="@color/primaryColor" 
      app:expandedTitleMarginEnd="16dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fitsSystemWindows="true" 
       app:layout_collapseMode="parallax"> 

       <include 
        android:id="@+id/inc_gallery" 
        layout="@layout/proj_galery_new" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" /> 

      </FrameLayout> 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar1" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:layout_gravity="top" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 

       <include 
        android:id="@+id/toolbar_header_view" 
        layout="@layout/header_view" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:visibility="gone" /> 
      </android.support.v7.widget.Toolbar> 

     </android.support.design.widget.CollapsingToolbarLayout> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.widget.NestedScrollView 
     android:id="@+id/vde_mv_scroll_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

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

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



     </FrameLayout> 
    </android.support.v4.widget.NestedScrollView> 
</android.support.design.widget.CoordinatorLayout> 
+0

Recyclerview scrollview के अंदर एक अच्छा विचार नहीं है। मुझे लगता है कि आपने Recyclerview निश्चित ऊंचाई दी है। मुझे लगता है कि समस्या कहां है। – Hein

+0

@ हेन मैंने केवल रैप सामग्री का उपयोग किया, लेकिन नेस्टेड स्क्रॉल व्यू रीसाइक्लर – appukrb

+0

के लिए पूर्ण स्थान आवंटित किया गया क्या आप लेआउट फ़ाइल डाल सकते हैं? – Hein

उत्तर

2

हटाने NestedScrollView और frameLayout है सकते हैं, और recycleView इस तरह के लिए app:layout_behavior="@string/appbar_scrolling_view_behavior" सेट:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/light_gray_vd"> 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:contentScrim="@color/primaryColor" 
      app:expandedTitleMarginEnd="16dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fitsSystemWindows="true" 
       app:layout_collapseMode="parallax"> 

       <include 
        android:id="@+id/inc_gallery" 
        layout="@layout/proj_galery_new" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" /> 

      </FrameLayout> 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar1" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:layout_gravity="top" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 

       <include 
        android:id="@+id/toolbar_header_view" 
        layout="@layout/header_view" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:visibility="gone" /> 
      </android.support.v7.widget.Toolbar> 

     </android.support.design.widget.CollapsingToolbarLayout> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v7.widget.RecyclerView 
       android:id="@+id/view_recycler" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:layout_behavior="@string/appbar_scrolling_view_behavior" 
       android:scrollbars="vertical"> 

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

</android.support.design.widget.CoordinatorLayout> 
0

मुद्दा दोनों Recyclerview और NestedScrollview स्क्रॉल कर रहे हैं। एक को हटाकर, आप जो प्रभाव चाहते थे उसे प्राप्त करने में सक्षम होना चाहिए।

तो, NestedScrollView अंदर डालने बिना केवल Recyclerviewउपयोग करके देखें। इस तरह:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/light_gray_vd" 
    > 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     > 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:contentScrim="@color/primaryColor" 
     app:expandedTitleMarginEnd="16dp" 
     app:expandedTitleMarginStart="48dp" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     > 

     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:fitsSystemWindows="true" 
      app:layout_collapseMode="parallax" 
      > 

     <include 
      android:id="@+id/inc_gallery" 
      layout="@layout/proj_galery_new" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      /> 

     </FrameLayout> 

     <View 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      /> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar1" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:layout_gravity="top" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      > 

     <include 
      android:id="@+id/toolbar_header_view" 
      layout="@layout/header_view" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:visibility="gone" 
      /> 
     </android.support.v7.widget.Toolbar> 

    </android.support.design.widget.CollapsingToolbarLayout> 

    </android.support.design.widget.AppBarLayout> 

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

तुम भी this example संदर्भ या इस article from Code path about how to handle scroll with CoordinatorLayout

CheeseSquare from Chris Bane पढ़ भी एक अच्छा CoordinatorLayout उदाहरण

0

मुझे एंड्रॉइड सपोर्ट लाइब्रेरी 23.2.0 अपडेट के बाद भी एक ही समस्या थी।

RecyclerViewandroid:layout_heightmatch_parent पर सेट करें।

और को निष्क्रिय नई automeasure सुविधा (read more):

LinearLayoutManager layoutManager = new LinearLayoutManager(getContext(), 
    LinearLayoutManager.VERTICAL, false); 
layoutManager.setAutoMeasureEnabled(false); 
recyclerView.setLayoutManager(layoutManager); 
+0

OnBindViewHolder() कॉल नहीं कर रहा है और दृश्य प्रतिपादन नहीं कर रहा है – GvSharma

संबंधित मुद्दे