Opsi 1) Cara cepat dan mudah (hanya Toolbar)
Sejak appcompat-v7-r23 Anda bisa menggunakan atribut berikut secara langsung pada Anda Toolbar
atau gayanya:
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
Jika SDK minimum Anda adalah 23 dan Anda menggunakan native, Toolbar
cukup ubah awalan namespace menjadi android
.
Di Java, Anda dapat menggunakan metode berikut:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
Metode ini menggunakan warna int, bukan ID sumber daya warna!
Opsi 2) Ganti gaya Toolbar dan atribut tema
layout / 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"/>
nilai / gaya.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>
Tolong! Ikon saya juga berubah warna!
@PeterKnut melaporkan bahwa ini memengaruhi warna tombol luapan, tombol laci navigasi, dan tombol kembali. Ini juga mengubah warna teks SearchView
.
Mengenai warna ikon: colorControlNormal
Mewarisi dari
android:textColorPrimary
untuk tema gelap (putih di atas hitam)
android:textColorSecondary
untuk tema terang (hitam putih)
Jika Anda menerapkan ini ke tema bilah tindakan , Anda dapat menyesuaikan warna ikon.
<item name="colorControlNormal">#de000000</item>
Ada bug di appcompat-v7 hingga r23 yang mengharuskan Anda untuk juga mengganti mitra native seperti:
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
Tolong! SearchView saya berantakan!
Catatan: Bagian ini mungkin sudah usang.
Karena Anda menggunakan widget pencarian yang karena alasan tertentu menggunakan panah kembali berbeda (tidak secara visual, secara teknis) dari yang disertakan dengan appcompat-v7, Anda harus menyetelnya secara manual di tema aplikasi . Drawable library dukungan diwarnai dengan benar. Jika tidak maka akan selalu putih.
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
Sedangkan untuk teks tampilan pencarian ... tidak ada cara mudah. Setelah menggali sumbernya, saya menemukan cara untuk masuk ke tampilan teks. Saya belum menguji ini jadi tolong beri tahu saya di komentar jika ini tidak berhasil.
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
Bonus: Mengganti atribut gaya dan tema ActionBar
Gaya yang tepat untuk bilah tindakan appcompat-v7 tindakan default akan terlihat seperti ini:
<!-- 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>