8

gösterilmeyen bir böyle scrollview içinde RecyclerView vardı:RecyclerView, bazı öğeleri

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!--other stuff--> 

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

     <android.support.v7.widget.RecyclerView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:visibility="gone"/> 

    </LinearLayout> 

    <!--other stuff--> 

</ScrollView> 

Ve RecyclerView 'ın öğeyi bir EditText ve diğer görünümleri vardır içeride olan bir RelativeLayout olduğunu. RelativeLayout ve EditText'un layout_height numarası wrap_content'dur. Kullanıcı, EditText numarasına herhangi bir uzunluk/çizgi sınırı olmadan girebilir, böylece her bir öğenin yüksekliği farklıdır.

Sonra Adapter içinde getItemCount() değeri true değerini döndürdüğünü, ancak onBindViewHolder() yanlış zamanların (daha az olması gerekir) çağrıldığını buldum, bu nedenle tüm öğeleri göstermek için yeterli değil.

Bu, yalnızca recyclerView.setNestedScrollingEnabled(false) yazdıysanız gerçekleşecek olduğunu buldum. Ama bu çizgiyi kaldıramıyorum. Çünkü ben öyle yapsaydım, RecyclerView düzgün kaydırmaz ve ScrollView ve ScrollView'un içinde diğer görünümlerle uyumlu değildir.

Bu, 6.0 üzerinde olur, ancak 4.1 üzerinde değil.

Bu sayfada Google ile iletişim kurdum: https://code.google.com/p/android/issues/detail?id=213914 ve bunun bana RecyclerView için bir hata düzeltmesi olduğunu söyledi. Soruyu ve hedefimi daha iyi anlayabilmeniz için bu sayfayı ziyaret edebilirsiniz (Orada sorunu göstermek için küçük bir örnek proje var). Ona şimdi bile katılmıyorum ve sorunu çözmek istiyorum. Lütfen yardım edin, şimdiden teşekkür ederim.

+0

android ayarlamayı deneyin: scrollView içinde fillViewport = "true" –

+0

@LucasPaolillo Peki, bu yardımcı olmuyor. – ywwynm

+0

android: fillViewPort = "true", doğrusal düzen yüksekliğini match_parent olarak değiştirin –

cevap

42

Çözümü kendim buldum: ile ScrollView değiştirin ve recyclerView.setNestedScrollingEnabled(false)'u saklayın. NestedScrollView'un bunun için yapılmış olup olmadığını bilmiyorum ama işe yarıyor.

UYARI:

  1. NestedScrollViewScrollView bir çocuk ama FrameLayout ait değildir.
  2. Bu çözüm ayrıca bazı hataların kendiliğinden oluşturulmuş adjustResize ile getirilmesini sağlar.
+0

teşekkürler. cazibe gibi çalıştı. ScrollView'ı NestedScrollView ile değiştirdim ve şimdi her şey yolunda. –

+2

bana da yardımcı oldu, teşekkürler, '' setNestedScrollingEnabled (false); '' '' pürüzsüz kaydırma tutmak önemlidir önemlidir – user2582318

+0

You are god! : D Teşekkür ederim –