ตัวเลือกที่ 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);
วิธีการเหล่านี้ใช้ 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"/>
ค่า / 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>