安卓ActionBar选项卡颜色

24

我已将ActionBar选项卡添加到我的应用程序中。该下划线的默认颜色为浅蓝色。如何更改所选选项卡的颜色或样式?

6个回答

98

如果有人想在代码中更改操作栏的颜色/背景,可以像这样做

final ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.action_bar_bg));

更改在Actionbar下方的选项卡栏颜色:

actionBar.setStackedBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.color_brown_dark)));

更改选项卡栏的背景:

actionBar.setStackedBackgroundDrawable(getResources().getDrawable(
            R.drawable.coupon_header));

4
这是如何动态设置选项卡的背景颜色。这个回答值得更多点赞... - Gunnar Karlsson
我建议您按照第一个答案中描述的方式通过XML样式属性来设置ActionBar的样式。这是因为这样Android会在启动Activity之前完成所有烦人/昂贵的工作,如加载可绘制对象和颜色。 - martyglaubitz
我认为用户需要等待的总时间仍然相同,不取决于加载可绘制对象的顺序。如果需要在运行时更改颜色/图像,则仅在代码中执行会更有用/更灵活。 - thomasdao
23
这些回答实际上都没有回答问题。原帖问的是如何更改操作栏选项卡下划线颜色。第一个代码示例更改了出现在选项卡上方的操作栏背景颜色。第二个和第三个示例都调用了相同的方法,可以更改整个选项卡的背景颜色。这两种方法都没有实际更改浅蓝色选项卡下划线的颜色。 - Jonathan Ellis
当按下按钮时,如何设置高亮颜色以及图标/徽标?谢谢。 - SteveEdson

11

这太棒了,节省了很多时间。强烈建议首先使用它。 - Meanman

10

selectableItemBackground 是我认为你在寻找的属性。 我建议您阅读关于 自定义操作栏 的文章,以及查看 这篇SO问题这篇

在代码中,我似乎找不到一种可以自定义所选项目的方法,但是自定义操作栏本身将如下所示。

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("FF0000"));


我正在Java中创建ActionBar。 ActionBar bar = getActionBar(); 那么我该如何在其上设置样式? - user533844
谢谢你的帮助,但我只需要在选项卡上设置不同的颜色。 - user533844
我不确定这个可以在代码中完成。如果您的要求仅限于代码,请在问题中明确说明。 - Terrance
这是更改操作栏背景颜色的方法。如果我需要通过编程方式更改操作栏选项卡的背景颜色,我该怎么做?因为在纵向模式下,操作栏处于拆分模式,即操作栏标题与徽标和选项卡。 - Karthick

7
ActionBar bar = getActionBar();

bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

// set background for action bar
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0c2354")));

// set background for action bar tab
bar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#B5C0D0")));       

bar.show();

3

这里有一种更简单的方法:

我曾经为此苦苦挣扎了好几天,但最终找到了解决方案。我正在使用AppCompat。您可以在主题中设置colorAccent,这将更改操作栏上的高亮颜色。像这样:

<item name="colorAccent">@color/highlightcolor</item>

以下是上下文:

<style name="LightTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/darkgrey</item>
    <item name="colorPrimaryDark">@color/black</item>
    <item name="colorAccent">@color/highlightcolor</item>
</style>

以下是我最初发布这个答案的地方:Android选项卡下划线颜色不改变


我已经搜索了几天,但没有找到确切的解决方案。谢谢你的答案,它真的帮了我很多。 - Taha Rushain

2

1) 生成操作栏样式,点击下载ZIP文件获取文件。

2) 解压步骤1中创建的zip文件后,您将获得一个res文件夹。将此文件夹添加到您的项目下的platform/android目录中。

3) 修改manifest.xml以使用新的操作栏样式,其中“Action”是步骤1中设置的样式名称。

<android xmlns:android="http://schemas.android.com/apk/res/android">      
<tool-api-level>14</tool-api-level>
<manifest>
    <application android:theme="@style/Theme.Action"/>
    <uses-sdk android:minSdkVersion="14"
        android:targetSdkVersion="16"/>
</manifest>
</android>

这篇手册帮助了我,希望对你也有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接