以编程方式禁用 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 中弃用,而且它不能像你预期的那样在平板电脑上工作。我会用
(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);
}
});
应用回答的样式 也禁用了指示器。一种解决方案为我解决了两个问题:)
是否可以使用编程方式/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 中弃用,而且它不能像你预期的那样在平板电脑上工作。我会用
(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);
}
});
应用回答的样式