2014-10-18 3 views
26

AppCompat 상태 표시 줄 색을 actionBarStyle으로 변경하고 원하는 색상의 배경으로 스타일을 만들었습니다.머티리얼 디자인 변경 AppCompat ActionBar Color

이제 재료 디자인 AppCompat를 사용하면이 방법이 더 이상 작동하지 않습니다.

도와 주시겠습니까? 감사.

+0

당신은 액션 바 참조 될 수 있습니까?무슨 뜻인지 알기 위해서. –

+0

@NikolaDespotoski AppCompat 스타일을 가져야하는 ActionBarActivity가 있습니다. 그래서, 내가 한 것은 그 AppCompat 스타일에 actionBarStyle이라는 속성을 추가하는 것입니다. 그리고 거기에 설정 한 스타일은 작업 표시 줄을 다른 색으로 변경 한 배경을가집니다. – user3184899

+0

@NikolaDespotoski 도움? – user3184899

답변

90

테마에 정의 할 수있는 colorPrimary이라는 새로운 속성이 있습니다. 이렇게하면 ActionBar 또는 툴바의 단색을 얻을 수 있습니다. 약간의 예를 다음

:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <!-- colorPrimary is used for the default action bar background --> 
    <item name="colorPrimary">@color/my_action_bar_color</item> 
</style> 

주의 사항 : 그것은 values-v21 제외한 모든 값-폴더 만 colorPrimary하지 android:colorPrimary을 수 있습니다.

색상 팔레트 사용자 정의에 대한 자세한 내용은 developer.android.com에서 확인할 수 있습니다.

+1

색상 기본은 Api 20+ 용입니다. Kitkat에있을 때, 이것은 단순히 나를 위해 아무것도하지 않습니다. –

+8

아니에요. 'colorPrimary'는'v7-appcompat'의 일부이므로 기본적으로 API-Level 7 이상에서 사용할 수 있습니다 (부모 'Theme.AppCompat'에 주목하십시오). – reVerse

+1

효과가있었습니다! 감사! – user3184899

3

필자의 경우, @reVerse는 부분적인 대답이있었습니다. 나는 도구 모음의 다른 부분을 사용자 지정했기 때문에 colorPrimary를 작동시키기 위해 몇 가지 추가 변경을해야했습니다 ... 특히 텍스트 색상. 도구 모음의 배경색보다 더 많은 사용자 정의 할 때

<!-- As @reVerse mentioned, you need to use colorPrimary instead of android:colorPrimary --> 
<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/my_toolbar_color</item> 
</style> 

<!-- I was incorrectly using @style/Theme.AppCompat.Light for the popupTheme attribute --> 
<style name="MyToolbarStyle" parent="Widget.AppCompat.ActionBar"> 
    <item name="theme">@style/MyToolbarTextStyle</item> 
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> 
</style> 

<!-- I was incorrectly using Them.AppCompat.Light for the parent here --> 
<style name="MyToolbarTextStyle" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <item name="android:textColorPrimary">@color/my_toolbar_text_color</item> 
</style> 

그래서, 당신이 중 하나를 사용하기 위해 확인해야 : 여기

내가 잘못하고 있었는지 의견을 표시와 함께, 내 작업 styles.xml 파일입니다 테마 오버레이 테마 또는 어떤 이유로 든 colorPrimary가 무시됩니다.

완성도를 들어

, 여기, Toolbar.xml 내 도구 모음에 사용하는 레이아웃 파일입니다

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schmeas.android.com/apk/res-auto" 
    style="@style/MyToolbarStyle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

는 희망이 누군가를하는 데 도움이! 또한

0
<style name="AppTheme" parent="Theme.AppCompat.Light"> 

     <item name="colorPrimary">@color/ColorPrimary</item> 
     <item name="colorPrimaryDark">@color/ColorPrimaryDark</item> 
     <!-- Customize your theme here. --> 
    </style> 

참조 : 내 경험이 오버라이드에,

<application 
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
    /> 

그러나 : Making Custom ActionBardirections in the documentation

0

이 응용 프로그램 바이 같은 안드로이드 매니페스트 파일의 테마를 설정하는 것이 좋습니다 설정하기 colorPrimary 스타일은 사용자 지정 AppTheme에 대해 설정됩니다. 나를 위해 일한 것은 다음과 같은 사용자 정의 테마를 정의하는 것이 었습니다.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

그리고 나서 AndroidManifest 파일에서이 테마를 사용하십시오.

<application 
    android:theme="@style/AppTheme" 
    /> 

colorPrimary을 기반으로 활동하는 설정 도구 모음의 배경 색상 괜찮 았는데 후.
<android.support.v7.widget.Toolbar 
    android:id="@+id/my_toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    android:elevation="4dp" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

(어두운 테마로 ThemeOverlay 설정은 텍스트가 빛 보장합니다.)

관련 문제