2015-03-30 3 views
2

Можно ли отключить индикатор вкладки с помощью программно/Java-кода?
Это, как я устанавливаю другие вкладки свойств:Отключить индикатор вкладки ActionBar программно

actionBar = getSupportActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
actionBar.setHomeButtonEnabled(false); 
actionBar.setDisplayShowTitleEnabled(false); 
actionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));  

ActionBar.TabListener методы:

@Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
     try { 
      if (tab.getPosition() == 4) { 
       listFlyout = null; 
       pwindo = null; 
       items.clear(); 
       addFlyout(); 
      } else if (tab.getPosition() == 0) { 
       tab.getIcon().setColorFilter(Color.parseColor("#10A595"), PorterDuff.Mode.SRC_IN); 
       selectedTabIndex = tab.getPosition(); 
      } else if (tab.getPosition() == 1) {     tab.getIcon().setColorFilter(Color.parseColor("#F25252"), PorterDuff.Mode.SRC_IN); 
       selectedTabIndex = tab.getPosition(); 
      } else if (tab.getPosition() == 2) { 
       tab.getIcon().setColorFilter(Color.DKGRAY, PorterDuff.Mode.SRC_IN); 
       selectedTabIndex = tab.getPosition(); 
      } else if (tab.getPosition() == 3) { 
       tab.getIcon().setColorFilter(Color.DKGRAY, PorterDuff.Mode.SRC_IN); 
       selectedTabIndex = tab.getPosition(); 
       } 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
     tab.getIcon().setColorFilter(Color.GRAY, PorterDuff.Mode.SRC_IN); 
    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
     if (tab.getPosition() == 4) { 
      listFlyout = null; 
      pwindo = null; 
      items.clear(); 
      addFlyout(); 
     } 
    } 

Но я получаю зеленый индикатор вкладки, которые я не хочу.

enter image description here

+0

Просьба предоставить код setOnPageChangeListener(). –

+0

@AvishekDas: Зачем это потребуется? Однако у меня есть ActionBar.TabListener. Я обновил свой вопрос, в котором вы можете это просмотреть. – Nitish

+0

В этом методе listner функция вызвала onPageSelected, эта функция обрабатывает ее –

ответ

-2

Применяя стиль как ответил here отключить индикатор, а также. Одно решение для меня два вопроса:

+0

Вы упомянули: ** Я не хочу отключать индикатор вкладки, используя стили. ** в любом случае, если вы не хотите давать бонусы, вы можете, но, пожалуйста, точно укажите свой вопрос, а затем попросите о помощи. – mmlooloo

+0

@mmlooloo: Я даже не думал об исправлении этой проблемы, когда менял стиль. Я менял его, чтобы проверить некоторые другие проблемы, и даже этот был исправлен. Я не наградил вас щедростью, потому что я не могу использовать сторонние классы. Вы правы, хотя о моем вопросе о том, чтобы не использовать стиль. Поэтому я сейчас редактировал его. – Nitish

2

Если на вашем месте я бы не стал использовать ActionBar вкладку, так как он устарел из апи 21, а также он не работает на таблетках, как вы можете ожидать. Я хотел бы использовать

1) PagerSlidingTabStrip

2) SlidingTabsBasic

(другая версия SlidingTabsBasic является here вы должны добавить SlidingTabLayout.java и SlidingTabStrip.java)

Если вы хотите использовать PagerSlidingTabStrip вы можете использовать pstsIndicatorColor или

public void setIndicatorColor(int indicatorColor) 

public void setIndicatorColorResource(int resId) 

из библиотеки.

Если вы хотите использовать SlidingTabsBasic вы можете использовать

SlidingTabLayout tabs = (SlidingTabLayout) findViewById(R.id.tabs); 
tabs.setViewPager(viewpager); 

tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { 

    @Override 
    public int getIndicatorColor(int position) { 
    return getResources().getColor(R.color.white); 
    } 

    @Override 
    public int getDividerColor(int position) { 
    return getResources().getColor(R.color.white); 
    } 
}); 
Смежные вопросы