以编程方式禁用 ActionBar 选项卡指示器

Disable ActionBar tab indicator programmatically

是否可以使用编程方式/Java 代码禁用选项卡指示器?
这就是我设置其他选项卡属性的方式:

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

但是我得到了我不想要的 绿色 选项卡指示器。

如果我是你,我不会使用 ActionBar 选项卡,因为它已从 api 21 中弃用,而且它不能像你预期的那样在平板电脑上工作。我会用

1)PagerSlidingTabStrip

2)SlidingTabsBasic

(SlidingTabsBasic 的另一个版本是 here 您必须添加 SlidingTabLayout.javaSlidingTabStrip.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);
    }
});

应用回答的样式 也禁用了指示器。一种解决方案为我解决了两个问题:)