詳細:
ActionBarActivityを拡張しています。
EclipseとSDKは2011-11-06現在で完全にパッチが適用されています。
<uses-sdk Android:minSdkVersion="4" Android:targetSdkVersion="14" />
Android 2.3.3でSamsungデバイスにデプロイされました
アプリケーションにAndroid:theme="@Android:style/Theme.Light"
があります
問題: アプリケーションは明るいですが、ActionBarは灰色のアイコンで青く、青の背景色に対してはほとんど見えません。アクションバーも明るくしたいので、灰色のアイコンが見やすくなっています。
私はスタイルを変更しようとしましたが、役に立ちませんでした。
私はたぶん些細なことに欠けています。
XMLを使用してActionBarActivityのActionBarの背景色を変更する方法
ドキュメンテーション - によると、「Android 3.0(API level 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"をアプリケーション/アクティビティのテーマとして設定します。
これを試して
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
これを試して:
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
これを使用する - http://jgilfelt.github.io/Android-actionbarstylegenerator/ /
ライブプレビューであなたのアクションバーをカスタマイズすることを可能にするその素晴らしいツール。
私は以前の答えを試してみましたが、タブや文字のような他の色を変えることにいつも問題を抱えていて、ものを微調整するのに何時間も費やしました。このツールは、ほんの数分でデザインを完成させるのに役立ちました。
ではごきげんよう! :)
私は同じ問題を抱えていました、私がそのコードを入力したときに私のアクションバーが灰色に変わるというところです。あなたのオリジナルのスタイルシートはこのようになっているのでしょう。
<style name="AppBaseTheme" parent="Android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
</style>
"DarkActionBar"はあなたのアクションバーを灰色に保っていたものでした。私はこれをこれに変更しました、そしてそれはうまくいきました:
<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>
テキストの色を編集する方法もスローしました。また、リソースを取り巻く何かを変更する必要はありません。
- ウォーレン
参考のために 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 <11 で 動作しません ですので、xml
でアクションバーをスタイリングすることはAPI <11のための唯一の方法です
あなたのカラーコードで直接この行を追加してください
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#5e9c00")));
毎回ActionBarオブジェクトを作成する必要はありません...
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
1行のコードを試してください:
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.MainColor)));
アクションバーのテキストとアクションバーの背景に異なる色を指定するには、以下のコードを使用してください。
<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>
これで、アクションバーの色を変えることができます。
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);
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
ActionBar actionbar = getSupportActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
このコードは役に立つかもしれません
<!-- 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>
このコードを使用して、アクションバーの背景色を変更します。 「res/values/themes.xml」を開き(存在しない場合は作成します)、追加します。
<?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以降のバージョンでのみ機能します。
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>
これを使うと、うまくいくでしょう。
ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));