XML을 사용하여 ActionBarActivity의 ActionBar의 배경색을 어떻게 변경합니까? SDK가 완전히 패치되었습니다. <uses-sdk

세부:

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의 배경색을 어떻게 변경합니까?



답변

당으로 문서 – “당신은 행동과 안드로이드 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”를 응용 프로그램 / 활동의 테마로 설정하십시오.


답변

이 시도

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>    

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

-빽빽이 들어선 건물


답변

작업 표시 줄의 동작은 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이다


답변

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

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

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