2016-07-06 17 views
5

स्क्रॉल करते समय विस्तारित वस्तुओं के बीच स्थान देखें, मैंने अपने RecyclerView को अपने Android Application के लिए समाप्त कर दिया है, लेकिन जब इसका परीक्षण किया जाता है, तो मुझे एक अजीब बग मिली जो मुझे समझ में नहीं आती। जब गतिविधि लॉन्च होती है, तो Recycler दृश्य में आइटम RecyclerView में सही दूरी पर अच्छी तरह से स्थित हैं। हालांकि, एक बार जब मैं स्क्रॉल करना शुरू करता हूं तो वे एक दूसरे से अलग हो जाते हैं जब तक कि केवल एक आइटम एक ही बार दिखाई नहीं दे रहा है, और आपको अगले आइटम को देखने से पहले स्क्रीन के distance almost equivalent को स्क्रॉल करना होगा। गतिविधि दोपहर के भोजन केरीसाइक्लर

enter image description here

पर स्क्रॉल recycleview

enter image description here

स्क्रॉल करने के बाद इससे पहले कि

क्या आपको पता है क्या हो सकता है है:

यहाँ बग कैसा दिखता है इसका कारण बनना, किसी भी मदद की सराहना की जाएगी।

private ArrayList<String> imagesUrlListThumb, imagesUrlListFull = new ArrayList<String>(); 
private RecyclerAdapter recyclerAdapter; 
private String urlRecyclerThumb = ""; 
private RecyclerView recyclerView; 
private ImageView imgCurRecyclerView; 

    imagesUrlListThumb = produit.getImgUrlThumbMul(); 
    recyclerAdapter = new RecyclerAdapter(getApplicationContext(), imagesUrlListThumb); 
    recyclerView = (RecyclerView) findViewById(R.id.content_product_detail_recycer_view); 
    RecyclerView.LayoutManager recyclerLayoutManager = new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.HORIZONTAL, false); 
    recyclerView.setLayoutManager(recyclerLayoutManager); 
    recyclerView.setAdapter(recyclerAdapter); 
    urlRecyclerThumb = imagesUrlListThumb.get(0); 
    RecyclerItemClickSupport.addTo(recyclerView).setOnItemClickListener(new RecyclerItemClickSupport.OnItemClickListener() { 
     @Override 
     public void onItemClicked(RecyclerView rv, int pos, View view) { 
      urlRecyclerThumb = imagesUrlListThumb.get(pos); 
      Picasso.with(getApplicationContext()).load(urlRecyclerThumb).fit().into(imgCurRecyclerView); 
     } 
    }); 

रेमंड अनुकूलक:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder>{ 

private List<String> urlThumbImg; 
private Context context; 

public RecyclerAdapter(Context ctx, List<String> urls){ 
    this.urlThumbImg = urls; 
    this.context = ctx; 
} 

@Override 
public RecyclerAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ 
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_slideshow, parent, false); 
    return new MyViewHolder(itemView); 
} 

@Override 
public void onBindViewHolder(RecyclerAdapter.MyViewHolder holder, int position){ 
    String current = urlThumbImg.get(position); 
    Picasso.with(context).load(current).fit().into(holder.myImgView); 
} 

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

public class MyViewHolder extends RecyclerView.ViewHolder { 
    public ImageView myImgView; 

    public MyViewHolder(View view){ 
     super(view); 
     myImgView = (ImageView) view.findViewById(R.id.imageView_slide); 
    } 
} 
} 

यहाँ मेरी XML लेआउट recycler दृश्य के विषय में है:

<!-- RECYCLER VIEW --> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="15dp" 
     android:orientation="vertical"> 

     <ImageView 
      android:id="@+id/content_product_detail_recycer_view_cur_image" 
      android:layout_width="150dp" 
      android:layout_height="130dp" 
      android:layout_gravity="center" 
      android:background="@android:color/black" /> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/content_product_detail_recycer_view" 
      android:layout_width="wrap_content" 
      android:layout_height="60dp" 
      android:layout_gravity="center" 
      android:layout_margin="5dp" 
      android:background="@android:color/darker_gray"> 

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

    </LinearLayout> 

आइटम के लिए लेआउट

यहाँ गतिविधि से RecyclerView कोड है अंदर पुनर्नवीनीकरण:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ImageView 
    android:id="@+id/imageView_slide" 
    android:layout_width="60dp" 
    android:layout_height="60dp" 
    android:layout_margin="5dp" 
    android:background="@android:color/darker_gray" /> 

+2

अपने recyclerView कोड wrap_content करने के लिए दोनों चौड़ाई और ऊंचाई सेट? –

+0

पुनर्नवीनीकरण के अंदर आपके लिए लेआउट प्रदान करता है और रीसाइक्लिंग के लिए कोड – Kushan

+0

@ अहमदअल्स्नी मैंने कोड को मेरे प्रश्न –

उत्तर

8

अपने लेआउट और RecyclerView कोड डिबग मदद और एक अनुमान लगाने के लिए नहीं करने के लिए प्रदान करें।

रिलीज के साथ 2.3.0 LayoutManager एपीआई के लिए एक रोमांचक नई सुविधा नहीं है: ऑटो माप

इसलिए यहाँ ठीक मुद्दा है! यह एक रीसाइक्लिंग व्यू को अपनी सामग्री के आकार के आधार पर आकार देने की अनुमति देता है। इसका अर्थ यह है कि पहले अनुपलब्ध परिदृश्य, जैसे कि RecyclerView के आयाम के लिए WRAP_CONTENT का उपयोग करना, अब संभव है। आप लेआउटमेनर्स में निर्मित सभी पाएंगे अब ऑटो-मापन का समर्थन करते हैं। पहले अनदेखा लेआउट (जैसे स्क्रॉल दिशा में MATCH_PARENT के रूप में) मानकों अब पूरी तरह से ध्यान रखा जाएगा:

इस परिवर्तन के कारण, दोगुना अपने मद विचारों के लेआउट मापदंडों जाँच करना सुनिश्चित करें।

मूल रूप से आप LinearLayout चौड़ाई में match_parent प्रत्येक आइटम एक छवि और शेष अंतरिक्ष के साथ पूरे स्क्रीन फिट करने के लिए खड़ी कर रहा है LinearLayout

<ImageView 
android:id="@+id/imageView_slide" 
android:layout_width="60dp" 
android:layout_height="60dp" 
android:layout_margin="5dp" 
android:background="@android:color/darker_gray" /> 

दूर करने के लिए की जरूरत है।

आप LinearLayout का उपयोग करने पर जोर देते हैं, तो

+0

धन्यवाद है, विस्तृत प्रतिक्रिया के लिए बहुत धन्यवाद, आपने मुझे एक समाधान और स्पष्टीकरण दिया, इसलिए मैं इसकी सराहना करता हूं। उम्मीद है कि यह मुझे भी वही गलती करने से रोकता है, चीयर्स! –

+2

src: http://stackoverflow.com/questions/35728179/recyclerview-items-with-big-empty-space-after-23-2-0 –

+0

धन्यवाद @ अहमद अलसनी :) उद्धरण के लिए स्रोत जोड़ने के लिए भूल गए:) – Kushan

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