Не удается удалить строку индикатора вкладки PagerTabStrip - Android

Я хотел бы удалить индикатор вкладки PagerTabStrip, но не могу найти способ. Я пытался установить setDrawFullUnderline(false), но он все еще там. Если я установлю его цвет прозрачным, я получу черную линию:-/

Как я мог избавиться от этого? Спасибо!

PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById (R.id.pager_tab_strip); pagerTabStrip.setDrawFullUnderline (истина); 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>

2 ответа

    tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setIndicatorHeight(0);

Установите высоту индикатора ноль. Надеюсь, это поможет.

Да, документы для

setTabIndicatorColor()

сказать:

Старший байт (альфа) игнорируется.

устанавливает собственную альфа на полосу вкладок в зависимости от положения, когда вы перемещаете страницу.

Так давайте будем злыми и топаем все это!

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);
    }
}

Поскольку зависимая от позиции альфа рассчитывается другим методом, если мы установим ее на ноль непосредственно перед рисованием, цвет вкладки в действительности станет прозрачным.

Используйте это так:

<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>
Другие вопросы по тегам