2015-07-18 4 views
3

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

Как я могу избавиться от него? Благодаря!

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> 

enter image description here

ответ

-1

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

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> 
0
tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
    tabs.setIndicatorHeight(0); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^