2016-07-06 32 views
5

私はちょうどAndroid Applicationのために私のRecyclerViewを終えましたが、それを試してみるとわかりません。アクティビティが開始されると、Recyclerビュー内の項目は、適切な距離でRecyclerViewに配置されます。ただし、スクロールを開始すると、一度に1つのアイテムしか表示されなくなるまで、互いに離れて移動し、次のアイテムを表示する前に、distance almost equivalentを画面のスクロールにスクロールする必要があります。あなたはどのような可能性のあるアイデアを持っている場合はrecycleviewスクロール時にアイテム間のRecyclerViewスペース

enter image description here

をスクロールした後

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); 
     } 
    }); 

リサイクラーアダプタ:ここ

は活動からRecyclerViewコードである。ここ

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 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> 

レイアウトリサイクラービュー内:

<?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

あなたのためのレイアウトを提供するrecyclerview内のアイテムとrecyclerviewのコード – Kushan

+0

@AhmadAlsanieコードを追加しました。私の質問 –

答えて

8

推測を行うデバッグを支援していないためにあなたのレイアウトとRecyclerViewコードを提供します。ので、ここで

OKが問題である:自動測定:

リリースでのLayoutManagerのAPIへのエキサイティングな新機能がある2.3.0! これにより、RecyclerViewはその内容のサイズに基づいてサイズ変更することができます。つまり、RecyclerViewのディメンションにWRAP_CONTENTを使用するなど、これまで使用できなかったシナリオが可能になりました。 組み込みのLayoutManagerが自動測定をサポートするようになりました。今完全に尊重される(例えば、スクロール方向のMATCH_PARENTなど)以前に無視されたレイアウトパラメータ:

この変更により、アイテムビューのレイアウトパラメータを再確認してください。

は、基本的にはのLinearLayout幅のmatch_parent 1枚の画像と残りのスペースで画面全体に合うように各項目を引き起こしているの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

感謝@Ahmad Alsanie :)引用符のソースを追加するのを忘れた: ) – Kushan

関連する問題