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.68k stars 1.54k forks source link

小概率(但总时不时发生),指示器会连成线 #227

Open qianshengta opened 4 years ago

qianshengta commented 4 years ago

版本:1.6.0 手机:小米8SE(其他手机上没出现这问题,不知道是不是小米独有的)。 系统:9.0 问题:小概率(但总时不时发生),指示器会连成线。就是两个选项之间会被一个指示器相连 异常情况: 异常显示 正常情况: 正常显示

代码:

      val commonNavigator = CommonNavigator(baseActivity)
        commonNavigator.isAdjustMode = true
        commonNavigator.adapter = object : CommonNavigatorAdapter() {

            override fun getCount(): Int {
                return mTitleDataList?.size ?: 0
            }

            override fun getTitleView(context: Context, index: Int): IPagerTitleView {
                val colorTransitionPagerTitleView = ColorTransitionPagerTitleView(context)
                colorTransitionPagerTitleView.normalColor = Color.GRAY
                colorTransitionPagerTitleView.selectedColor = Color.BLACK
                colorTransitionPagerTitleView.text = mTitleDataList[index]
                colorTransitionPagerTitleView.setOnClickListener { ViewPager.currentItem = index }
                return colorTransitionPagerTitleView
            }

            override fun getIndicator(context: Context): IPagerIndicator {
                val indicator = LinePagerIndicator(context)
                indicator.lineWidth = ConvertUtils.dp2px(30f).toFloat()
                indicator.roundRadius = ConvertUtils.dp2px(3f).toFloat()
                indicator.setColors(Color.parseColor("#0365FF"))
                indicator.mode = LinePagerIndicator.MODE_EXACTLY
                return indicator
            }

        }
        Indicator.navigator = commonNavigator
        val titleContainer: LinearLayout = commonNavigator.titleContainer
        titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
        titleContainer.gravity = Gravity.CENTER
        titleContainer.dividerPadding = ConvertUtils.dp2px(110f)
        ViewPagerHelper.bind(Indicator, ViewPager)

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/Layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorWhite">

    <View
        android:id="@+id/StateView"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/ViewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:overScrollMode="never"
        android:scrollbars="none"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@id/Indicator"/>

    <android.support.constraint.helper.Layer
        android:id="@+id/Layer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_white_gradient_shadow_bottom"
        app:constraint_referenced_ids="Back,Right,Indicator"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/StateView"/>

    <ImageView
        android:id="@+id/Back"
        android:layout_width="wrap_content"
        android:layout_height="25dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:src="@mipmap/ic_back_black"
        app:layout_constraintBottom_toBottomOf="@+id/Indicator"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@id/StateView"/>

    <View
        android:id="@+id/Right"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/Back"/>

    <net.lucode.hackware.magicindicator.MagicIndicator
        android:id="@+id/Indicator"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:paddingLeft="80dp"
        android:paddingRight="80dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/StateView"/>

    <ImageView
        android:id="@+id/HintImg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="100dp"
        android:src="@mipmap/bg_guide_hint"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/Back"/>

    <TextView
        android:id="@+id/HintText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:text="价目表在这里呦!"
        android:textColor="@color/colorWhite"
        android:textSize="@dimen/text_size_h2"
        app:layout_constraintBottom_toBottomOf="@id/HintImg"
        app:layout_constraintLeft_toLeftOf="@id/HintImg"
        app:layout_constraintRight_toRightOf="@id/HintImg"
        app:layout_constraintTop_toTopOf="@id/HintImg"/>

    <android.support.constraint.Group
        android:id="@+id/GuideGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:constraint_referenced_ids="HintImg,HintText"/>
</android.support.constraint.ConstraintLayout>
zwc456baby commented 3 years ago

我也有这样的现象,小概率。。。我自己测试过程中出现了。我也是小米手机,一般是第一个 tab 切换时出现。第二个第三个切换好像不会