2

是否可以使用编程方式/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();
        }
    }

但是我得到了我不想要 的绿色标签指示器。

在此处输入图像描述

4

2 回答 2

2

如果我是你,我不会使用ActionBartab,因为它在 api 21 中已被弃用,而且它也不能像你期望的那样在平板电脑上工作。我会用

1) PagerSlidingTabStrip

2)SlidingTabsBasic

(另一个版本的 SlidingTabsBasic 在这里你必须添加 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);
    }
});
于 2015-04-03T08:13:36.733 回答
-2

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

于 2015-04-04T07:46:49.660 回答