Tùy chọn 1) Cách nhanh chóng và dễ dàng (chỉ Thanh công cụ)
Vì appcompat-v7-r23, bạn có thể sử dụng các thuộc tính sau trực tiếp trên kiểu của bạn Toolbar
hoặc của nó:
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
Nếu SDK tối thiểu của bạn là 23 và bạn sử dụng bản địa Toolbar
chỉ cần thay đổi tiền tố không gian tên thành android
.
Trong Java, bạn có thể sử dụng các phương pháp sau:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
Các phương thức này lấy int màu không phải là ID tài nguyên màu!
Tùy chọn 2) Ghi đè các thuộc tính chủ đề và kiểu Thanh công cụ
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"/>
giá trị / 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>
Cứu giúp! Các biểu tượng của tôi cũng thay đổi màu sắc!
@PeterKnut đã báo cáo điều này ảnh hưởng đến màu của nút tràn, nút ngăn điều hướng và nút quay lại. Nó cũng thay đổi màu văn bản của SearchView
.
Liên quan đến màu sắc biểu tượng: Kế colorControlNormal
thừa từ
android:textColorPrimary
cho các chủ đề tối (trắng trên đen)
android:textColorSecondary
cho các chủ đề ánh sáng (đen trên trắng)
Nếu bạn áp dụng điều này cho chủ đề của thanh tác vụ , bạn có thể tùy chỉnh màu biểu tượng.
<item name="colorControlNormal">#de000000</item>
Đã xảy ra lỗi trong appcompat-v7 lên đến r23, yêu cầu bạn cũng phải ghi đè đối tác gốc như vậy:
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
Cứu giúp! SearchView của tôi là một mớ hỗn độn!
Lưu ý: Phần này có thể đã lỗi thời.
Vì bạn sử dụng tiện ích tìm kiếm vì lý do nào đó sử dụng mũi tên quay lại (không trực quan, về mặt kỹ thuật) so với mũi tên đi kèm với appcompat-v7, bạn phải đặt nó theo cách thủ công trong chủ đề của ứng dụng . Các ngăn kéo của thư viện hỗ trợ được tô màu chính xác. Nếu không nó sẽ luôn có màu trắng.
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
Đối với văn bản xem tìm kiếm ... không có cách nào dễ dàng. Sau khi tìm hiểu nguồn của nó, tôi đã tìm thấy một cách để đến chế độ xem văn bản. Tôi chưa thử nghiệm điều này vì vậy vui lòng cho tôi biết trong phần nhận xét nếu điều này không hiệu quả.
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
Phần thưởng: Ghi đè các thuộc tính chủ đề và kiểu ActionBar
Kiểu phù hợp cho thanh tác vụ appcompat-v7 action mặc định sẽ trông như sau:
<!-- 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>