详细说明:
我正在扩展ActionBarActivity 自2011-11-06起,Eclipse和SDK已完全修补。
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14" />
使用Android 2.3.3部署到三星设备
申请有android:theme="@android:style/Theme.Light"
问题:应用程序很轻,但ActionBar为蓝色,带有灰色图标,蓝色背景颜色几乎看不到。我也希望ActionBar很轻,所以灰色图标更明显。
我尝试修改样式但无济于事 我可能错过了一些微不足道的东西。
如何使用XML更改ActionBarActivity的ActionBar的背景颜色?
答案 0 :(得分:504)
根据documentation - “您可以使用在Android 3.0(API级别11)中添加的ActionBar API来控制操作栏的行为和可见性。”
因此,ActionBar不适用于API级别为10(Android 2.3.3)的目标环境。
以防万一,如果您的目标是最低API等级11,您可以通过定义自定义样式来更改ActionBar的背景颜色,如下所示:
<resources>
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">ANY_HEX_COLOR_CODE</item>
</style>
</resources>
并且,将“MyTheme”设置为应用程序/活动的主题。
答案 1 :(得分:202)
试试这个
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
答案 2 :(得分:119)
试试这个:
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
答案 3 :(得分:69)
使用此 - http://jgilfelt.github.io/android-actionbarstylegenerator/
它是一款令人惊叹的工具,可让您通过实时预览自定义操作栏。
我尝试了之前的答案但总是遇到更改其他颜色(如标签和字母以及花费数小时调整内容)的问题。这个工具帮助我在几分钟内完成了我的设计。
一切顺利! :)
答案 4 :(得分:54)
我遇到了同样的问题,当我输入该代码时,我的操作栏会变灰。您的原始样式表可能是这样的:
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
</style>
“DarkActionBar”让你的Action Bar保持灰色。我把它改成了这个,它起作用了:
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<!-- API 14 theme customizations can go here. -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">#2aa4cd</item>
<item name="android:titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item>
</style>
<style name="Theme.MyAppTheme.ActionBar.TitleTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">#FFFFFF</item>
</style>
我还介绍了如何编辑文本颜色。此外,无需更改资源周围的任何内容。
-Warren
答案 5 :(得分:38)
请参阅Android Official Documentation以获取参考
我正在构建一个使用minSdkVersion = "9"
和targetSdkVersion = "21"
的应用程序我更改了操作栏的颜色,在API级别9下工作正常
这是一个xml
res/values/themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/actionbar_background</item>
<!-- Support library compatibility -->
<item name="background">@color/actionbar_background</item>
</style>
</resources>
并设置所需的操作栏颜色
res/values/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="actionbar_background">#fff</color> //write the color you want here
</resources>
也可以在.class
文件中定义操作栏颜色,代码段为
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
但 API&lt; 无效 11 ,因此xml
中的操作栏样式仅适用于API&lt; 11
答案 6 :(得分:19)
使用您的颜色代码直接添加此行
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#5e9c00")));
每次都不需要创建ActionBar对象......
答案 7 :(得分:15)
在Nexus 4上,这似乎使颜色变灰了。
ActionBar bar = getActionBar(); // or MainActivity.getInstance().getActionBar()
bar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
bar.setDisplayShowTitleEnabled(false); // required to force redraw, without, gray color
bar.setDisplayShowTitleEnabled(true);
(这篇文章全部归功于它,但它被隐藏在评论中,所以我想在这里展示它) https://stackoverflow.com/a/17198657/1022454
答案 8 :(得分:13)
尝试一行代码:
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.MainColor)));
答案 9 :(得分:7)
使用下面的代码为操作栏文本和操作栏背景提供不同的颜色,只需在清单中使用下面的主题对照您想要输出的活动:)
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:titleTextStyle">@style/TitleBarTextColor</item>
<item name="android:background">YOUR_COLOR_CODE</item>
</style>
<style name="TitleBarTextColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">YOUR_COLOR_CODE</item>
</style>
答案 10 :(得分:5)
这是您可以更改操作栏的颜色的方法。
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
public class ActivityUtils {
public static void setActionBarColor(AppCompatActivity appCompatActivity, int colorId){
ActionBar actionBar = appCompatActivity.getSupportActionBar();
ColorDrawable colorDrawable = new ColorDrawable(getColor(appCompatActivity, colorId));
actionBar.setBackgroundDrawable(colorDrawable);
}
public static final int getColor(Context context, int id) {
final int version = Build.VERSION.SDK_INT;
if (version >= 23) {
return ContextCompat.getColor(context, id);
} else {
return context.getResources().getColor(id);
}
}
}
从MainActivity.java中更改操作栏颜色,如下所示
ActivityUtils.setActionBarColor(this, R.color.green_00c1c1);
答案 11 :(得分:4)
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
ActionBar actionbar = getSupportActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
答案 12 :(得分:2)
2021 年:没有弃用的 Kotlin oneliner:
supportActionBar?.setBackgroundDrawable(ColorDrawable(ContextCompat.getColor(this,R.color.red)))
只需将其放入 onCreate
答案 13 :(得分:2)
有时此选项会引发NullPointerException
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
但是这个选项对我有用。因此,您可以尝试一下。
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));
快乐编码
答案 14 :(得分:2)
此代码可能会有所帮助
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
</style>
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- customize the color palette -->
<item name="colorPrimary">@color/material_blue_500</item>
<item name="colorPrimaryDark">@color/material_blue_700</item>
<item name="colorAccent">@color/material_blue_500</item>
<item name="colorControlNormal">@color/black</item>
</style>
<style name="CardViewStyle" parent="CardView.Light">
<item name="android:state_pressed">@color/material_blue_700</item>
<item name="android:state_focused">@color/material_blue_700</item>
<!--<item name="android:background">?android:attr/selectableItemBackground</item>-->
</style>
答案 15 :(得分:1)
使用此代码..更改操作栏背景颜色。 打开&#34; res / values / themes.xml&#34; (如果不存在,创建它) 并添加
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@drawable/actionbar_background</item>
</style>
注意:此代码仅适用于Android 3.0及更高版本
答案 16 :(得分:1)
如果您使用的是androidx AppCompact。使用以下代码。
androidx.appcompat.app.ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable("Color"));
答案 17 :(得分:0)
使用它,它会起作用。
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
答案 18 :(得分:0)
这对我来说,对于AppCompatActivity来说,都是
<item name="actionBarStyle">@style/BlackActionBar</item>
</style>
<style name="BlackActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
<item name="background">@android:color/black</item>
<item name="titleTextStyle">@style/BlackActionBarTitleTextStyle</item>
</style>
<style name="BlackActionBarTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@android:color/white</item>
<item name="android:fontFamily">@font/cinzel_decorative</item>
</style>
答案 19 :(得分:0)
使用API 21或更高版本的用户非常简单。在下面使用此代码
<resources>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:background">@color/colorDarkGrey</item>
</style>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.ActionBar">
<item name="android:background">@color/colorDarkGrey</item>
</style>
答案 20 :(得分:-2)
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.TabColor)));
color.xml文件:
<resources> <color name="TabColor">#11FF00</color> </resources>`