옵션 1) 빠르고 쉬운 방법 (도구 모음 만 해당)
appcompat-v7-r23 이후로 다음 속성을 사용자 Toolbar
또는 해당 스타일 에 직접 사용할 수 있습니다 .
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
최소 SDK가 23이고 네이티브를 사용 Toolbar
하는 경우 네임 스페이스 접두사를 android
.
Java에서는 다음 방법을 사용할 수 있습니다.
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
이 메서드는 색상 리소스 ID가 아닌 색상 int를 사용합니다!
옵션 2) 툴바 스타일 및 테마 속성 재정의
레이아웃 /xxx.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.MyApp.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
style="@style/Widget.MyApp.Toolbar.Solid"/>
values / styles.xml
<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/actionbar_color</item>
<item name="android:elevation" tools:ignore="NewApi">4dp</item>
<item name="titleTextAppearance">...</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<!-- Parent theme sets colorControlNormal to textColorPrimary. -->
<item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>
도움! 내 아이콘도 색상이 변경되었습니다!
@PeterKnut은 이것이 오버플로 버튼, 탐색 창 버튼 및 뒤로 버튼의 색상에 영향을 미친다고보고했습니다. 또한의 텍스트 색상을 변경합니다 SearchView
.
아이콘 색상 관련 : 다음에서 colorControlNormal
상속
android:textColorPrimary
어두운 테마 용 (검정 바탕에 흰색)
android:textColorSecondary
밝은 테마 (흰색 바탕에 검은 색)
이것을 액션 바의 테마에 적용 하면 아이콘 색상을 사용자 지정할 수 있습니다.
<item name="colorControlNormal">#de000000</item>
appcompat-v7에서 r23까지의 버그가 있었기 때문에 다음과 같이 기본 대응 항목도 재정의해야합니다.
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
도움! 내 SearchView가 엉망입니다!
참고 :이 섹션은 더 이상 사용되지 않을 수 있습니다.
어떤 이유로 appcompat-v7에 포함 된 것과 다른 뒤로 화살표 (시각적, 기술적으로 아님)를 사용하는 검색 위젯을 사용하므로 앱의 테마 에서 수동으로 설정해야합니다 . 지원 라이브러리의 드로어 블이 올바르게 착색됩니다. 그렇지 않으면 항상 흰색이됩니다.
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
검색보기 텍스트에 관해서는 ... 쉬운 방법은 없습니다. 소스를 살펴본 후 텍스트보기로 이동하는 방법을 찾았습니다. 나는 이것을 테스트하지 않았으므로 이것이 작동하지 않으면 의견에 알려주십시오.
SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color
보너스 : ActionBar 스타일 및 테마 속성 재정의
기본 작업 appcompat-v7 작업 표시 줄에 대한 적절한 스타일은 다음과 같습니다.
<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
<item name="background">@color/actionbar_color</item> <!-- No prefix. -->
<item name="elevation">4dp</item> <!-- No prefix. -->
<item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>
<style name="Theme.MyApp" parent="Theme.AppCompat">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
<item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>