blog

RecyclerviewはViewPagerの効果を達成するために

これで、ビューページャーを模倣することができました。 これで、2つの画像は、左と右のマージンなしで互いに隣接している、アダプタ内の画像の幅とそれらの間のマージンを設定し始めます。...

Jan 8, 2021 · 2 min. read
シェア

以下の効果を得るための依頼を受けました。

ビューセットアンドロイドでビューページャーを使用して直接考えるのは初めて要求を受信した後:clipChildren = "false "は、ビューの表示範囲を制限していない、書き込み後に左の距離と最後のイメージと右の距離の最初のイメージは、次の空白領域に表示されます制御する方法がないことがわかりました。

recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), RecyclerView.HORIZONTAL, false));
RecyclerViewpagerAdapter recyclerViewpagerAdapter = new RecyclerViewpagerAdapter(getActivity(), R.layout.item_image);
recyclerView.setAdapter(recyclerViewpagerAdapter);
recyclerViewpagerAdapter.setNewData(list);

その後、上記の

PagerSnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);

これでviewpagerを模倣することができました。 これで2枚の写真が左右の余白なしで隣り合うようになったので、アダプタで写真の幅と写真間の余白を設定し始めます。レイアウトで直接ピクチャのマージンを設定すると、最初のピクチャの左マージンと最後のピクチャの右マージンが真ん中のピクチャのマージンと矛盾してしまうので、最初のピクチャから左マージンまでの距離をコントロールする必要があります。

@Override
 protected void convert(BaseViewHolder helper, final HuoDongBean item) {
 ImageView imageView = helper.getView(R.id.imageView);
 if (helper.getAdapterPosition() == 0){//最初のイメージ
 // パッケージの内容を設定したり、親フォームのサイズを埋める
 LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(
 ScreenUtils.getScreenWidth()-200, LinearLayout.LayoutParams.MATCH_PARENT);
 //マージンの値を設定する
 lp1.setMargins(30, 0, 30, 0);
 imageView.setLayoutParams(lp1);
 }else{
 // パッケージの内容を設定したり、親フォームのサイズを埋める
 LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(
 ScreenUtils.getScreenWidth()-200, LinearLayout.LayoutParams.MATCH_PARENT);
 //マージンの値を設定する
 lp1.setMargins(0, 0, 30, 0);
 imageView.setLayoutParams(lp1);
 }
 Glide.with(context).load(item.src).into(imageView);
 }

判定の最初のイメージの左の距離30右の距離15、イメージの残りの部分の左の距離0右の距離30の一貫性のあるマージンの効果を達成するために、コントロールの幅の動的な設定は、私は直接画面の幅マイナス200に怠けている 推奨されません!

終わり

効果を見る

Read next