【问题标题】:Cannot remove PagerTabStrip tab indicator line - Android无法删除 PagerTabStrip 选项卡指示线 - Android
【发布时间】:2015-10-08 08:46:02
【问题描述】:

我想删除 PagerTabStrip 选项卡指示器,但我找不到方法。我试图设置 setDrawFullUnderline(false) 但它仍然存在。如果我将它的颜色设置为透明,我会得到一条黑线:-/

我怎样才能摆脱它?谢谢!

PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById(R.id.pager_tab_strip); pagerTabStrip.setDrawFullUnderline(true); pagerTabStrip.setTabIndicatorColor(Color.TRANSPARENT);

<android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="390dp"
        android:layout_above="@+id/page_indicator"
        android:padding="20dp">

        <android.support.v4.view.PagerTabStrip
            android:id="@+id/pager_tab_strip"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:background="@android:color/transparent"
            android:textAppearance="@style/PagerTabStripText"
            android:paddingTop="5dp"
            android:paddingBottom="5dp" />

        </android.support.v4.view.ViewPager>

【问题讨论】:

    标签: android tabs android-viewpager indicator pagertitlestrip


    【解决方案1】:

    是的,文档

    setTabIndicatorColor()
    

    说:

    忽略高字节(alpha)。

    根据您滑动页面时的位置,在标签条上设置自己的 alpha。

    所以,让我们变得邪恶,把它踩在脚下吧!

    public class PagerTabStripNoInd extends PagerTabStrip {
        private static final String TAG = "PagerTabStripNoInd";
        private static final Integer ZERO = new Integer(0);
        public PagerTabStripNoInd(Context context) {
            super(context);
        }
        public PagerTabStripNoInd(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
        @Override
        protected void onDraw(Canvas canvas) {
            try {
                Field tabAlphaField = PagerTabStrip.class.getField("mTabAlpha");
                tabAlphaField.setAccessible(true);
                tabAlphaField.set(this, ZERO);
            } catch (NoSuchFieldException e) {
                Log.e(TAG, "onDraw", e);
            } catch (IllegalAccessException e) {
                Log.e(TAG, "onDraw", e);
            }
            super.onDraw(canvas);
        }
    }
    

    由于位置相关的 alpha 是用不同的方法计算的,如果我们在绘制之前将其设置为零,标签颜色最终会真正透明。

    像这样使用它:

    <android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="390dp"
        android:layout_above="@+id/page_indicator"
        android:padding="20dp">
    
        <!-- use your fully qualified class name here, for example -->
        <com.example.PagerTabStripNoInd
            android:id="@+id/pager_tab_strip"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:background="@android:color/transparent"
            android:textAppearance="@style/PagerTabStripText"
            android:paddingTop="5dp"
            android:paddingBottom="5dp" />
    
    </android.support.v4.view.ViewPager>
    

    【讨论】:

      【解决方案2】:
          tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
          tabs.setIndicatorHeight(0);
      

      设置指示器零的高度。 我希望它会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多