web-dev-qa-db-ja.com

XMLを使用してActionBarActivityのActionBarの背景色を変更する方法を教えてください。

詳細:

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の背景色を変更する方法

260
user77115

ドキュメンテーション - によると、「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"をアプリケーション/アクティビティのテーマとして設定します。

504
lupchiazoem

これを試して

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

これを試して:

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
119
user2428604

これを使用する - http://jgilfelt.github.io/Android-actionbarstylegenerator/ /

ライブプレビューであなたのアクションバーをカスタマイズすることを可能にするその素晴らしいツール。

私は以前の答えを試してみましたが、タブや文字のような他の色を変えることにいつも問題を抱えていて、ものを微調整するのに何時間も費やしました。このツールは、ほんの数分でデザインを完成させるのに役立ちました。

Here's a screenshot of the tool

ではごきげんよう! :)

69

私は同じ問題を抱えていました、私がそのコードを入力したときに私のアクションバーが灰色に変わるというところです。あなたのオリジナルのスタイルシートはこのようになっているのでしょう。

<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>    

テキストの色を編集する方法もスローしました。また、リソースを取り巻く何かを変更する必要はありません。

- ウォーレン

54
Warren

Actionbarの振る舞いは、API <11でも変更できます

参考のために 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のための唯一の方法です

38
Apurva

あなたのカラーコードで直接この行を追加してください

getSupportActionBar().setBackgroundDrawable(
    new ColorDrawable(Color.parseColor("#5e9c00")));

毎回ActionBarオブジェクトを作成する必要はありません...

19
CrazyMind

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

15
John Ballinger

1行のコードを試してください:

getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.MainColor)));
13
SANAT

アクションバーのテキストとアクションバーの背景に異なる色を指定するには、以下のコードを使用してください。

<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);
5
Siddarth Kanted

アクティビティを拡張するときは、次のコードを使用します。

ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));

AppCompatActivityを拡張する場合は、次のコードを使用します。

ActionBar actionbar = getSupportActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
4
arlo shie

このコードは役に立つかもしれません

<!-- 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>
2
Qutbuddin Bohra

このコードを使用して、アクションバーの背景色を変更します。 「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以降のバージョンでのみ機能します。

1
Amey Bawiskar

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>
0
Tejasvi Hegde

これを使うと、うまくいくでしょう。

ActionBar actionbar = getActionBar();
actionbar.setBackgroundDrawable(new ColorDrawable("color"));
0
Pankaj Lilan