android - ActionBar AppCompat 更改 Tab 指示器颜色

标签 android android-actionbar android-appcompat android-styles android-actionbar-compat

我看过很多帖子和答案,但我仍然不清楚,如果我必须更改选项卡指示器颜色而不使用 Android Asset Studio,该怎么办

public class MainActivity extends ActionBarActivity implements           android.support.v7.app.ActionBar.TabListener{

private ViewPager tabsviewPager;
private TabsAdapter mTabsAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tabsviewPager = (ViewPager) findViewById(R.id.tabspager);

    mTabsAdapter = new TabsAdapter(getSupportFragmentManager());

    tabsviewPager.setAdapter(mTabsAdapter);

    getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
    getSupportActionBar().setIcon(
               new ColorDrawable(getResources().getColor(android.R.color.transparent)));        
    //getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.bg));
    getSupportActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#3b5998")));


    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    Tab friendstab = getSupportActionBar().newTab().setIcon(R.drawable.ic_action_action_account_child).setTabListener(this);
    Tab publicprofiletab = getSupportActionBar().newTab().setIcon(R.drawable.ic_action_action_account_box).setTabListener(this);
    Tab communitytab = getSupportActionBar().newTab().setIcon(R.drawable.ic_action_action_account_circle).setTabListener(this);

    getSupportActionBar().addTab(friendstab);
    getSupportActionBar().addTab(publicprofiletab);
    getSupportActionBar().addTab(communitytab);

我附上了现有的应用截图,我的操作栏目前的样子,见下文:

enter image description here

如您所见,我正在使用 #0000ff 作为 Action bar background,并且我想为 Tab Indicator 使用相同的颜色/p>

最佳答案

actionBarTabStyle 属性应该是 Application/Activity 的基础主题,而不是 ActionBar 样式

请参阅为您的应用程序创建新样式并应用于 list 文件中的节点。

<style name="AppTheme" parent="Theme.Base.AppCompat">
<item name="android:actionBarStyle">@style/MyCustomActionBar</item>
<item name="android:actionBarTabStyle">@style/MyActionBarTabViewStyle</item>
<item name="actionBarTabStyle">@style/MyActionBarTabView</item>

像这样自定义 ActionBarTab 主题

<style name="MyActionBarTabViewStyle" parent="Widget.AppCompat.Base.ActionBar.TabView">
<item name="android:background">@drawable/action_bar_stacked_background</item>

@style/MyActionBarTabView这是一种更简单的安卓风格。

另请参阅 Styling ActionBar

关于android - ActionBar AppCompat 更改 Tab 指示器颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27394531/

相关文章:

android - setBuiltInZoomControls 与 PopupWindow 内的 WebView

android - 使用 Google API 是否会限制 Android 设备支持?

android - JSON 数据解析 - 如何?

java - 如何删除操作栏右上角的设置图标(溢出菜单)?

返回时,Android 工具栏变得半透明

android - AppCompat fragment 生命周期已更改

Android:AbsListView.setItemChecked() 导致 ActionMode 销毁并重新创建?

android - 使用 Material 主题和AppCompat时如何使用getActionBar()/getSupportActionBar()

java - 安卓 : onOptionsItemSelected getItemId returns wrong id

android - 向后兼容 AccessibilityTraversalOrder