Opcja 1) Szybki i łatwy sposób (tylko pasek narzędzi)
Od appcompat-v7-r23 możesz używać następujących atrybutów bezpośrednio w swoim Toolbar
lub jego stylu:
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
Jeśli minimalny zestaw SDK to 23 i używasz natywnego, Toolbar
po prostu zmień prefiks przestrzeni nazw na android
.
W Javie możesz użyć następujących metod:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
Te metody pobierają kolor int, a nie identyfikator zasobu koloru!
Opcja 2) Zastąp styl i atrybuty motywu paska narzędzi
układ / 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"/>
wartości / style.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>
Wsparcie! Moje ikony też zmieniły kolor!
@PeterKnut zgłosił, że ma to wpływ na kolor przycisku przepełnienia, przycisku szuflady nawigacji i przycisku Wstecz. Zmienia również kolor tekstu SearchView
.
Odnośnie kolorów ikon: colorControlNormal
Dziedziczy z
android:textColorPrimary
dla ciemnych motywów (biały na czarnym)
android:textColorSecondary
do jasnych motywów (czarny na białym)
Jeśli zastosujesz to do motywu paska akcji , możesz dostosować kolor ikony.
<item name="colorControlNormal">#de000000</item>
Wystąpił błąd w appcompat-v7 do r23, który wymagał od Ciebie zastąpienia natywnego odpowiednika w następujący sposób:
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
Wsparcie! Mój SearchView to bałagan!
Uwaga: ta sekcja jest prawdopodobnie nieaktualna.
Ponieważ używasz widżetu wyszukiwania, który z jakiegoś powodu używa innej strzałki wstecz (nie wizualnie, technicznie) niż ten dołączony do appcompat-v7, musisz ustawić go ręcznie w motywie aplikacji . Elementy do rysowania w bibliotece pomocy są odpowiednio przyciemniane. W przeciwnym razie zawsze byłby biały.
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
Jeśli chodzi o tekst widoku wyszukiwania ... nie ma łatwego sposobu. Po przekopaniu się przez jego źródło znalazłem sposób na przejście do widoku tekstu. Nie testowałem tego, więc daj mi znać w komentarzach, jeśli to nie zadziałało.
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: Zastąp styl i atrybuty motywu ActionBar
Odpowiedni styl dla domyślnego paska akcji appcompat-v7 wyglądałby następująco:
<!-- 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
i użyjesz go jako motywu , to tło każdego elementu potomnego również zostanie pokolorowane.Oto moje rozwiązanie, jeśli chcesz zmienić tylko kolor tytułu, a nie kolor tekstu w widgecie wyszukiwania.
layout / toolbar.xml
wartości / motywy.xml
W podobny sposób możesz ustawić również wygląd napisów.
źródło
Jeśli obsługujesz API 23 i nowsze , możesz teraz użyć atrybutu titleTextColor, aby ustawić kolor tytułu paska narzędzi.
layout / toolbar.xml
MyActivity.java
źródło
Ustawiam
app:titleTextColor
mojeandroid.support.v7.widget.Toolbar
prace na Androidzie 4.4 i 6.0 również zcom.android.support:appcompat-v7:23.1.0
:źródło
Przez chwilę mnie to denerwowało i nie podobała mi się żadna z udzielonych odpowiedzi, więc spojrzałem na źródło, aby zobaczyć, jak to działa.
FractalWrench znajduje się na właściwej ścieżce, ale można go używać poniżej API 23 i nie trzeba go ustawiać na pasku narzędzi samodzielnie.
Jak powiedzieli inni, możesz ustawić styl na pasku narzędzi za pomocą
iw tym stylu możesz ustawić kolor tekstu tytułu za pomocą
dla wersji przed API 23 lub dla 23+
Pełny plik xml
Oto wszystkie atrybuty, które można ustawić dla paska narzędzi
źródło
Najprostszy sposób zmiany
Toolbar
koloru tytułu za pomocą inCollapsingToolbarLayout
.Dodaj poniższe style do
CollapsingToolbarLayout
style.xml
źródło
Jeśli możesz używać appcompat-v7 app: titleTextColor = "# fff">
źródło
To zadziałało dla mnie
źródło
Utwórz pasek narzędzi w swoim xml ... toolbar.xml:
Następnie dodaj następujące elementy w pliku toolbar.xml:
Remeber @ color / colorText to po prostu twój plik color.xml z atrybutem koloru o nazwie colorText i twoim kolorem. Jest to najlepszy sposób na wywołanie ciągów znaków zamiast zakodowania na sztywno twojego koloru wewnątrz toolbar.xml. Masz również inne opcje modyfikowania tekstu, takie jak: tekst Wygląd ... itd ... po prostu wpisz app: tekst ... a intelisense wyświetli opcje w Android Studio.
Twój końcowy pasek narzędzi powinien wyglądać następująco:
Uwaga: ten pasek narzędzi powinien znajdować się w twoim activity_main.xml.Easy Peasie
Inną opcją jest zrobienie tego wszystkiego w klasie:
Powodzenia
źródło
Aby zmienić kolor
/>
źródło
Walczyłem z tym przez kilka godzin dzisiaj, ponieważ wszystkie te odpowiedzi są teraz trochę nieaktualne, co z MDC i nowymi możliwościami tworzenia motywów po prostu nie mogłem zrozumieć, jak zastąpić
app:titleTextColor
aplikację szeroko jako styl.Odpowiedź jest taka, że
titleTextColor
dostępna w pliku styles.xml jest nadpisywanie czegoś, co dziedziczyWidget.AppCompat.Toolbar
. Dziś myślę, że najlepszym wyborem powinno byćWidget.MaterialComponents.Toolbar
:W motywie aplikacji określ pasek narzędzi Styl:
Teraz możesz pozostawić plik XML, w którym określasz pasek narzędzi, bez zmian. Przez długi czas myślałem, że zmiana
android:textColor
wyglądu tekstu tytułu w pasku narzędzi powinna działać, ale z jakiegoś powodu nie.źródło
źródło
}
Lub proste użycie z MainActivity:
style.xml
źródło
Zrób to z
toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);
// to jest styl, w którym możesz dostosować swój schemat kolorów
źródło
Bardzo proste, to zadziałało dla mnie (tytuł i ikona białe):
źródło
Z Biblioteką komponentów materiałów można używać
app:titleTextColor
atrybutu.W układzie możesz użyć czegoś takiego:
Możesz także użyć własnego stylu :
z (rozszerzeniem
Widget.MaterialComponents.Toolbar.Primary
stylu):lub (rozszerzenie
Widget.MaterialComponents.Toolbar
stylu):Możesz również nadpisać kolor zdefiniowany przez styl za pomocą
android:theme
atrybutu (używającWidget.MaterialComponents.Toolbar.Primary
stylu):z:
lub (używając
Widget.MaterialComponents.Toolbar
stylu):z:
źródło