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>
ThemeOverlay
dan menggunakannya sebagai tema , maka latar belakang setiap elemen anak juga akan diwarnai.Inilah solusi saya jika Anda hanya perlu mengubah warna judul dan bukan warna teks di widget pencarian.
layout / toolbar.xml
nilai / tema.xml
Dengan cara yang sama, Anda juga dapat mengatur subtitleTextAppearance.
sumber
Jika Anda mendukung API 23 dan yang lebih baru, Anda sekarang dapat menggunakan atribut titleTextColor untuk menyetel warna judul Toolbar.
layout / toolbar.xml
MyActivity.java
sumber
Pengaturan
app:titleTextColor
padaandroid.support.v7.widget.Toolbar
karya saya untuk saya di Android 4.4 dan 6.0 juga dengancom.android.support:appcompat-v7:23.1.0
:sumber
Ini mengganggu saya beberapa saat dan saya tidak menyukai jawaban yang diberikan, jadi saya melihat sumbernya untuk melihat cara kerjanya.
FractalWrench berada di jalur yang benar, tetapi dapat digunakan di bawah API 23 dan tidak harus disetel pada bilah alat itu sendiri.
Seperti yang dikatakan orang lain, Anda dapat mengatur gaya pada toolbar dengan
dan dalam gaya itu Anda dapat mengatur warna teks judul dengan
untuk pra API 23 atau untuk 23+
Xml penuh
Berikut semua atribut yang dapat diatur untuk toolbar
sumber
Cara termudah untuk mengubah
Toolbar
warna judul dengan inCollapsingToolbarLayout
.Tambahkan gaya di bawah ini ke
CollapsingToolbarLayout
styles.xml
sumber
Jika Anda dapat menggunakan appcompat-v7 app: titleTextColor = "# fff">
sumber
Ini berhasil untuk saya
sumber
Buat toolbar di xml ... toolbar.xml Anda:
Kemudian tambahkan yang berikut ini di toolbar.xml Anda:
Remeber @ color / colorText hanyalah file color.xml Anda dengan atribut color bernama colorText dan color Anda. Ini adalah cara terbaik untuk memanggil string Anda daripada melakukan hardcode warna Anda di dalam toolbar.xml Anda. Anda juga memiliki opsi lain untuk memodifikasi teks Anda, seperti: textAppearance ... dll ... cukup ketik app: teks ... dan intelisense akan memberi Anda opsi di studio android.
toolbar terakhir Anda akan terlihat seperti ini:
NB: Toolbar ini harus berada di dalam activity_main.xml.Easy Peasie Anda
Pilihan lainnya adalah melakukan semuanya di kelas Anda:
Semoga berhasil
sumber
Untuk Ubah Warna
/>
sumber
Saya berjuang dengan ini selama beberapa jam hari ini karena semua jawaban ini agak ketinggalan zaman sekarang apa dengan MDC dan kemampuan tema baru, saya tidak bisa melihat bagaimana cara mengganti
app:titleTextColor
aplikasi secara luas sebagai gaya.Jawabannya adalah yang
titleTextColor
tersedia di styles.xml adalah Anda menimpa sesuatu yang mewarisiWidget.AppCompat.Toolbar
. Hari ini saya pikir pilihan terbaik adalahWidget.MaterialComponents.Toolbar
:Dan di tema aplikasi Anda, tentukan toolbarStyle:
Sekarang Anda dapat membiarkan xml tempat Anda menentukan bilah alat tidak berubah. Untuk waktu yang lama saya pikir mengubah
android:textColor
tampilan teks judul di toolbar seharusnya bekerja, tetapi untuk beberapa alasan tidak.sumber
sumber
}
Atau penggunaan sederhana dari MainActivity:
style.xml
sumber
Lakukan dengan
toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);
// ini adalah gaya di mana Anda dapat menyesuaikan skema warna Anda
sumber
Sangat sederhana, ini berhasil untuk saya (judul dan ikon putih):
sumber
Dengan Material Components Library, Anda dapat menggunakan
app:titleTextColor
atribut tersebut.Dalam tata letak, Anda dapat menggunakan sesuatu seperti:
Anda juga dapat menggunakan gaya khusus :
dengan (memperluas
Widget.MaterialComponents.Toolbar.Primary
gaya):atau (memperluas
Widget.MaterialComponents.Toolbar
gaya):Anda juga dapat mengganti warna yang ditentukan oleh gaya menggunakan
android:theme
atribut (menggunakanWidget.MaterialComponents.Toolbar.Primary
gaya):dengan:
atau (menggunakan
Widget.MaterialComponents.Toolbar
gaya):dengan:
sumber