youth5201314 / banner

🔥🔥🔥Banner 2.0 来了!Android广告图片轮播控件,内部基于ViewPager2实现,Indicator和UI都可以自定义。
Apache License 2.0
12.9k stars 2.51k forks source link

setStartPosition 或 setCurrentItem 不起作用 #863

Closed morefreeliang closed 4 years ago

morefreeliang commented 4 years ago

如题,谢谢

morefreeliang commented 4 years ago

我设置自动轮播,设置如上所说的两个方法都不起作用。

然后我在布局中加入属性:app:is_infinite_loop="false"

然后就起作用了。

为了满足我要自动轮播,但是起始位置可配置:

我先设置不能自动轮播,然后显示banner后延时1s开启自动轮播,

但是这样ui效果有一个问题,就是滑到最后一张,再到第一张的时候,你会看到滑过所有的banner。

希望知道的指教下,谢谢

youth5201314 commented 4 years ago
  我测试没有问题啊!你要是不禁止无线循环不用设置app:is_infinite_loop的。我不知道你具体怎么用的,不过你可以运行demo,把握注释的打开运行下就知道了。我运行没有问题!

banner.setAdapter(adapter)//设置适配器 .setCurrentItem(3,false)//设置切换到指定位置 .addBannerLifecycleObserver(this)//添加生命周期观察者 .setIndicator(new CircleIndicator(this));//设置指示器

morefreeliang commented 4 years ago

首先感谢你有时间回复我的问题,

我的原始代码是这样的:

<com.youth.banner.Banner
            android:id="@+id/banner"
            android:layout_width="match_parent"
            android:layout_height="220dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
val bannerAdapter = ImageAdapter(images)
        banner.addBannerLifecycleObserver(requireActivity())
           .setIndicator(indicator, false)
            .setDelayTime(5000)
        banner.currentItem = currentIndex
        banner.adapter = bannerAdapter
        banner.setIndicatorNormalColor(Color.parseColor("#D8D8D8"))
        banner.setIndicatorSelectedColor(Color.parseColor("#ff6687"))

这样比如我想设置开始播放在第2张,不起作用。

后来根据你的回复,我把代码改成这样,可以了:

val bannerAdapter = ImageAdapter(images)
        banner.adapter = bannerAdapter
        banner.setCurrentItem(currentIndex+1, false)

        banner.addBannerLifecycleObserver(requireActivity())
        banner.setIndicator(indicator, false)
        banner.setDelayTime(5000)

        banner.setIndicatorNormalColor(Color.parseColor("#D8D8D8"))
        banner.setIndicatorSelectedColor(Color.parseColor("#ff6687"))

还有就是currentItem不是从第0开始的,是从1开始的是吗?

thanks for all