【问题标题】:view pager view like playstore像Play商店一样的viewpager视图
【发布时间】:2017-05-09 08:45:17
【问题描述】:

我的视图寻呼机代码很累,但它不适合我,因为我想像 Play 商店一样显示

HashMap<String, String> url_maps = new HashMap<String, String>();
        url_maps.put("PragYal Gold", "http://sponsorimage/9434654.jpg");
        url_maps.put("", "http://sponsorimage/4322132.jpg");
        url_maps.put("Zee Bangles", "http://sponsorimage/2312958.png");
        url_maps.put("", "http://sponsorimage/5134998.png");
        url_maps.put("Mahapragya", "http://sponsorimage/6830009.png");
        url_maps.put("", "http://sponsorimage/8537751.png");
        url_maps.put("Zee Bangles", "http://sponsorimage/3549573.png");
        url_maps.put("Shah & Comapny", "http://sponsorimage/5400190.png");
        url_maps.put("", "http://sponsorimage/8135090.png");
        for (String name : url_maps.keySet()) {
            TextSliderView textSliderView = new TextSliderView(getApplicationContext());
            // initialize a SliderLayout
            textSliderView
                    .description(name)
                    .image(url_maps.get(name))
                    .setScaleType(BaseSliderView.ScaleType.Fit)
                    .setOnSliderClickListener(this);

            //add your extra information
            textSliderView.bundle(new Bundle());
            textSliderView.getBundle()
                    .putString("extra", name);

            mDemoSlider.addSlider(textSliderView);
        }
        mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
        mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
        mDemoSlider.setCustomAnimation(new DescriptionAnimation());
        mDemoSlider.setDuration(4000);
        mDemoSlider.addOnPageChangeListener(this);

这是我的试用版,它的显示类似于

但我想要这样,请给我解决方案

谢谢你

【问题讨论】:

标签: android android-viewpager viewpagerindicator


【解决方案1】:

你必须在水平回收视图中使用卡片视图作为行。

您必须使用 snaphelper 和 recyclerview 来实现此行为。

Snaphelper 是关键。无需使用任何库。

http://www.devexchanges.info/2016/09/android-tip-recyclerview-snapping-with.html?m=1

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      对于旧的ViewPager,您可以像这样轻松地做到这一点:

      viewPager.setClipToPadding(false);
      viewPager.setPadding(48, 0, 48, 0);
      viewPager.setPageMargin(24);
      

      对于ViewPagger2 执行此操作: 在xml中:

      <androidx.viewpager2.widget.ViewPager2
              android:id="@+id/viewpager2"
              android:layout_width="match_parent"
              android:layout_height="@dimen/_120sdp" />
      

      在 Kotlin 中:

       viewPager2.adapter=SliderAdapter()
                  val rvInstance=viewPager2.children.first { it is RecyclerView } as RecyclerView
                  rvInstance.also {
                      it.setPadding(32.toPx(), 0, 16.toPx(), 0)
                      it.clipToPadding = false
                      it.addItemDecoration(ItemDecoration())
                  }
      

      你的 ItemDecoration 类:

      class ItemDecoration: RecyclerView.ItemDecoration() {
        override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
          super.getItemOffsets(outRect, view, parent, state)
          outRect.right = 16.toPx()
       //   outRect.left=16.toPx()
        }
      }
      
      fun Int.toPx(): Int {
        val metrics = Resources.getSystem().displayMetrics
        val px = this * (metrics.densityDpi / 160f)
        return Math.round(px)
      }
      

      【讨论】:

      • SliderAdapter 来自哪里?据我所知,它不是任何支持库的一部分。
      • SliderAdapter 是您的自定义适配器,您将制作并想使用它。
      猜你喜欢
      • 2016-03-19
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多