hackware1993 / MagicIndicator

A powerful, customizable and extensible ViewPager indicator framework. As the best alternative of ViewPagerIndicator, TabLayout and PagerSlidingTabStrip —— 强大、可定制、易扩展的 ViewPager 指示器框架。是ViewPagerIndicator、TabLayout、PagerSlidingTabStrip的最佳替代品。支持角标,更支持在非ViewPager场景下使用(使用hide()、show()切换Fragment或使用setVisibility切换FrameLayout里的View等),http://www.jianshu.com/p/f3022211821c
9.72k stars 1.55k forks source link

指示器tab之间的间距怎么设置,能否支持一下 #254

Open xuzhu19930323 opened 3 years ago

moqi-Git commented 3 years ago

目前的tab之间是没有间距的,indicator 的 View 都是 MATCH_PARENT 的。但可以用 LinePagerIndicator 的 setMode + setXOffset/setLineWidth 调整实际绘制的部分,实现间距效果。

有详细描述吗?

taichushouwang commented 3 years ago

@xuzhu19930323 @moqi-Git 我这边是通过覆写SimplePagerTitleView,然后直接设置view之前的padding就可以了,具体代码如下,代码是kotlin

init {
        setTextSizeDimen(R.dimen.sp_17)
        val padding = UIUtil.dip2px(context, 5.0)
        setPadding(padding, 0, padding, 0)
    }

但可以用 LinePagerIndicator 的 setMode + setXOffset/setLineWidth 调整实际绘制的部分,实现间距效果。 这个是主要是调整下划线的宽度和位置的 具体的代码LinePagerIndicator注释里面有

public static final int MODE_MATCH_EDGE = 0;   // 直线宽度 == title宽度 - 2 * mXOffset
public static final int MODE_WRAP_CONTENT = 1;    // 直线宽度 == title内容宽度 - 2 * mXOffset
public static final int MODE_EXACTLY = 2;  // 直线宽度 == mLineWidth