youth5201314 / banner

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

画廊模式指示器显示不出来 #753

Closed alexykuan closed 4 years ago

alexykuan commented 4 years ago

库版本2.0.7 测试手机:小米6 android10 麻烦大佬抽空看看 代码: banner_home_fragment.indicator = CircleIndicator(context) banner_home_fragment.setIndicatorSelectedColorRes(R.color.primary) banner_home_fragment.setIndicatorNormalColorRes(R.color.color_white) banner_home_fragment.setIndicatorGravity(IndicatorConfig.Direction.LEFT) banner_home_fragment.setIndicatorSpace(BannerUtils.dp2px(10f).toInt()) banner_home_fragment.setIndicatorMargins(IndicatorConfig.Margins(BannerUtils.dp2px(10f).toInt())) banner_home_fragment.setIndicatorWidth(10, 20) banner_home_fragment.setBannerGalleryEffect(60, 8, 0.86f) banner_home_fragment.addOnPageChangeListener(this) banner_home_fragment.start()

youth5201314 commented 4 years ago

使用外部指示器,在布局文件中使用,然后关联就行了,因为你是居左,所以指示器会被吃掉。居中你可以这么用,你在布局文件中单独使用,位置你可以随意放

alexykuan commented 4 years ago

按照大佬说的方法,我试了下会崩掉,并且爆出Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.,下面是我的布局代码

<com.youth.banner.Banner
                android:id="@+id/banner_home_fragment"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:overScrollMode="never"
                app:layout_collapseMode="parallax" />
<com.youth.banner.indicator.CircleIndicator
                android:id="@+id/ci_banner_indicator"
                android:layout_marginBottom="20dp"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_gravity="bottom" />

设置indicator代码

ci_banner_indicator.indicatorConfig.selectedColor = R.color.primary
ci_banner_indicator.indicatorConfig.normalColor = R.color.color_white
ci_banner_indicator.indicatorConfig.setIndicatorSpace(BannerUtils.dp2px(10f).toInt())
ci_banner_indicator.indicatorConfig.margins = IndicatorConfig.Margins(BannerUtils.dp2px(10f).toInt())
ci_banner_indicator.indicatorConfig.setSelectedWidth(20)
ci_banner_indicator.indicatorConfig.setNormalWidth(10)

然后是设置adapter代码

homeVM.banners.observe(
            viewLifecycleOwner,
            Observer {
                bannerAdapter = HomeBannerAdapter(view.context, it)
                banner_home_fragment.adapter = bannerAdapter
                banner_home_fragment.indicator = ci_banner_indicator
                banner_home_fragment.start()
            }
        )
youth5201314 commented 4 years ago

banner.setIndicator(indicator, false); 可以看看demo

alexykuan commented 4 years ago

问题解决了,感谢大佬

WDevaloper commented 4 years ago

怎么解决?

alexykuan commented 4 years ago

@WDevaloper 检查自己的代码,看作者回复