XML을 사용하여 ActionBarActivity의 ActionBar의 배경색을 어떻게 변경합니까?


277

세부:

ActionBarActivity를 확장하고 있습니다.
2011-11-06 현재 Eclipse 및 SDK가 완전히 패치되었습니다.

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14" />  

Android 2.3.3
응용 프로그램을 사용하여 Samsung 장치에 배포android:theme="@android:style/Theme.Light"

문제 : 응용 프로그램은 밝지 만 ActionBar는 회색 아이콘이있는 파란색이며 파란색 배경색에는 거의 보이지 않습니다. 또한 ActionBar가 밝아지기를 원하므로 회색 아이콘이 더 잘 보입니다.

스타일을 수정하려고했지만 아무 소용이 없습니다.
아마도 사소한 것이 빠져있을 것입니다.

XML을 사용하여 ActionBarActivity의 ActionBar의 배경색을 어떻게 변경합니까?


2
이 오래된 밤을 닫습니다. 인기있는 요구에 의한 Sannidhi에 대한 요점 그러나이 질문에 대한 답변은 Android의 몇 가지 버전에 해당하며 내 맥락에서 David Millers는 SherlockActionBar를 사용하라는 제안이 가장 관련이 있습니다.
user77115

1
다른 사람들을위한 약간의 노력 : XML보기의 첫 번째 요소를 ActionBar와 동일한 배경 (이 경우 흰색)으로 만들면 ActionBar가 회색으로 바뀝니다.
Joshua Pinter

생각할 때 TitleBar와 ActionBar는 특별한 것을 제공하지 않습니다. 그들은 당신이 그들을 모르는 경우 더 성가신 같습니다. A. 더 나은 대안은 숨기고 자신의 제목 표시 줄을 디자인하는 것입니다. 뷰 및 드로어 블을 사용하여 고유 한 위젯을 추가 할 수 있습니다. 제목 표시 줄에는 위젯이 없습니다. 액션 바는 모든 menuItems에 대해 하나의 드롭 다운 목록 만 가질 수 있습니다.

답변:


523

당으로 문서 - "당신은 행동과 안드로이드 3.0 (API 레벨 11)에 추가 된 액션 바 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"를 응용 프로그램 / 활동의 테마로 설정하십시오.


12
@AlexanderFragotsis 사용 <item name="android:textColor">@color/my_color</item>.
lethargicpanda

28
ActionBarCompat 라이브러리를 사용하는 경우 동일한 방법을 사용해야합니다. 유일한 차이점은 actionBarStyle ( Android : 접두어 없음) 항목을 변경 하여 3.0 이전 버전의 Android 장치
actionbar

3
색상의 HEX 코드를 넣는 대신에 @android:color정의 된 또는 사용자 정의 색상을 참조 할 가능성이 colors.xml있습니까? 나는 성공하지 않고 그것을 시도했다.
jmrodrigg

1
"<item name ="android : textColor "> @ color / my_color </ item>"을 사용하여 텍스트 작업 표시 줄 텍스트 색상을 변경할 수 없습니다.
Shirish Herwade

2
이것은 android : background 태그에서 작동하지 않았지만 android 태그를 생략하고 <item name = "background"> ​​색상을 모든 플랫폼에서 변경했을 때.
stevyhacker

209

이 시도

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

1
11-06 10 : 53 : 16.985 : E / AndroidRuntime (16956) : java.lang.NoSuchMethodError : com.acme.myActivity.getActionBar
user77115

1
@ coder_For_Life22 상황에 맞는 작업 표시 줄을 얻는 방법을 알고 있습니까?
Geeks On Hug

5
afaik, 지원 라이브러리 자체에는 ActionBar가 없으므로 SherlockActionBar를 포함해야합니다.
David Miler

22
어쩌면 이것은 이상하지만 내 경우 bar.setBackgroundDrawable(new ColorDrawable(Color.BLUE));에는 작업 표시 줄 색상을 회색으로 변경하십시오. 넣어 다른 색상이 같은 경우이 또한 발생 Color.RED, Color.GREEN등등 ...합니까 사람이 문제의 원인을 같은 문제가, 나 알아? Nexus S 기기
AlexAndro

4
stackoverflow.com/a/17198657/1022454 이 게시물은 작업 표시 줄 색상이 회색으로 나타나는 문제를 해결하는 것으로 보입니다.
Jonathon Fry

124

이 시도:

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

1
이것이 나머지 코드에 어떻게 맞습니까? 실제로 어디에 추가
해야하는지

7
@JGallardo와 같은 정확한 질문이 있습니다. 이것을 어디에 추가합니까? 나는 그것을 시도 onCreate하지만이 준 NullPointerException 편집 :이 추가 코드 I입니다 restoreActionBar 액션 바 액션 바 = getSupportActionBar은 (); actionBar.setBackgroundDrawable (새 ColorDrawable (Color.parseColor ( "# E5E4E2")));
rockydgeekgod

활동의 onCreate 메소드를 추가하십시오.
Ojonugwa Jude Ochalifu

3
getActionBar ()의 getSupportActionBar () instad 사용
Chanaka Fernando

69

이것을 사용하십시오 -http : //jgilfelt.github.io/android-actionbarstylegenerator/

라이브 미리보기로 작업 표시 줄을 사용자 정의 할 수있는 놀라운 도구입니다.

나는 이전 답변을 시도했지만 항상 탭과 문자와 같은 다른 색상을 변경하는 데 문제가 있었고 물건을 조정하는 데 시간을 보냈습니다. 이 도구를 사용하면 몇 분 안에 디자인을 완성 할 수있었습니다.

다음은 도구의 스크린 샷입니다.

모두 제일 좋다! :)


파일이 앱에 추가되면 파일을 사용하도록 앱을 설정하려면 어떻게합니까?
Mike

위의 스크린 샷 (예 : 명명 된)의 맥락에서 생성 된 res 폴더를 붙여 넣은 후에는 새로운 스타일 @ style / Theme.Example이 있어야합니다. AndroidManifest.xml에서 <application android : theme = "@ style / Theme.example">을 설정하십시오. 작동합니다 :)
Mohammad Shabaz Moosa

1
더 이상 사용되지 않습니다. 불행히도
Liangjun

55

코드를 입력하면 액션 바가 회색으로 변하는 동일한 문제가 발생했습니다. 원래 스타일 시트는 다음과 같습니다.

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

나는 또한 텍스트 색상을 편집하는 방법을 던졌습니다. 또한 리소스를 둘러싼 어떤 것도 변경할 필요가 없습니다.

-빽빽이 들어선 건물


38

작업 표시 줄의 동작은 API <11에서 변경할 수도 있습니다

참고로 안드로이드 공식 문서 를 참조하십시오

내가 가진 응용 프로그램을 구축하고있다 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 그렇게에서 액션 바의 스타일은, xmlAPI에 대한 유일한 방법 <11이다



조각에서 사용할 때 스 니펫이 앱에서 작동하지 않습니다. ActionBar bar = getActivity (). getActionBar ();로 변경했습니다. . 프래그먼트가 열리자 마자 충돌합니다.
호세 마누엘 아 바르카 로드리게스

1
문제를 발견하면 다음과 같이 작동합니다. ActionBar actionBar = getSupportActionBar ();
Jose Manuel Abarca Rodríguez

20

이 코드를 컬러 코드로 직접 추가하십시오.

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

매번 ActionBar 객체를 만들 필요가 없습니다 ...


1
텍스트로 사용하지 않고 색상을 얻기 위해 리소스를 사용하는 것이 좋습니다. getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.black)));
Dinesh

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


2
WTH가 틀렸다는 것을 알기 위해 수많은 시간을 보낸 후에이 답변이 도움이되었습니다.
Abdullah Umer

13

한 줄 코드를 사용해보십시오 :

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

1
내 앱이이 답변과 충돌합니다. 조각으로 작동하게하려면 다음과 같이 변경하십시오 : getActivity (). getActionBar (). setBackgroundDrawable (new ColorDrawable (getActivity (). getResources (). getColor (R.color.col_nar))); getActivity (). getActionBar (). setBackgroundDrawable (new ColorDrawable (getResources (). getColor (R.color.col_nar))); . 프래그먼트가 열리면 충돌합니다.
호세 마누엘 아 바카 로드리게스

1
문제를 발견하면 다음과 같이 작동합니다. ActionBar actionBar = getSupportActionBar ();
Jose Manuel Abarca Rodríguez

1
답은 활동에 대한 것입니다. 프래그먼트와 함께 사용하려면 프래그먼트에 getActivity (). getActionBar ()를
사용해야합니다

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>

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

5

활동을 연장 할 때 다음 코드를 사용하십시오.

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

AppCompatActivity를 확장 할 때 다음 코드를 사용하십시오.

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

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>


1

이 코드를 사용하여 작업 표시 줄 배경색을 변경하십시오. "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

이것은 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>

1

API 21 이상을 사용하는 사람들에게는 매우 간단합니다. 아래 코드를 사용하십시오.

다크 액션 바용

<resources>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:background">@color/colorDarkGrey</item>
</style>

for_LightActionBar

<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.ActionBar">
    <item name="android:background">@color/colorDarkGrey</item>
</style>

0

이것을 사용하면 효과가 있습니다.

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

0

때때로이 옵션은 NullPointerException을 발생시킵니다.

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

그러나이 옵션은 저에게 효과적입니다. 그래서 당신은 이것을 시도 할 수 있습니다.

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

행복한 코딩


0

androidx AppCompact를 사용중인 경우 아래 코드를 사용하십시오.

androidx.appcompat.app.ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable("Color"));

-2
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.TabColor)));

color.xml 파일 :

<resources> <color name="TabColor">#11FF00</color> </resources>`
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.