jak mogę zmienić kolor tekstu paska ActionBar? Odziedziczyłem motyw Holo Light, jestem w stanie zmienić tło paska ActionBar, ale nie wiem, jaki jest atrybut dostrajania w celu zmiany koloru tekstu.
Ok, jestem w stanie zmienić kolor tekstu za pomocą atrybutu android: textColorPrimary, ale zmienia również kolor tekstu menu rozwijanego wyświetlanego, gdy nastąpi przepełnienie przycisków ActionBar. Masz pomysł, jak zmienić kolor menu rozwijanego / Listy?
Odpowiedzi:
Ok, znalazłem lepszy sposób. Teraz mogę zmienić tylko kolor tytułu. Możesz także dostosować napisy.
Oto mój styles.xml:
źródło
Widget.Holo.Light.ActionBar
forMyTheme.ActionBarStyle
.Znalazłem sposób, który działa dobrze z dowolnym smakiem
ActionBar
( Sherlock , Compat i Native ):Wystarczy użyć html, aby ustawić tytuł i określić kolor tekstu. Na przykład, aby ustawić kolor tekstu ActionBar na czerwony, po prostu wykonaj następujące czynności:
Możesz również użyć czerwonego kodu szesnastkowego
#FF0000
zamiast słowared
. Jeśli masz z tym problem, zobacz Android Html.fromHtml (String) nie działa dla <font color = '#'> text </font> .Ponadto, jeśli chcesz użyć zasobu kolorów, można użyć tego kodu, aby uzyskać poprawny ciąg HEX i usunąć alfę w razie potrzeby ( znacznik czcionki nie obsługuje alfa):
źródło
red
z" + color + "
.#FF0000
z"+color+"
.Miałem ten sam problem co ty, to motyw Holo.Light, ale chciałem stylizować kolor ActionBar, więc musiałem również zmienić kolor tekstu, a także tytuł i menu. Więc na koniec poszedłem do git hub i spojrzałem na kod źródłowy, aż znalazłem cholernie poprawny styl:
więc teraz wszystko, co musisz zrobić, to ustawić cokolwiek
@color/actionBarText
i@drawable/actionbarbground
chcesz!źródło
Identyfikator ActionBar nie jest dostępny bezpośrednio, więc musisz trochę hakować tutaj.
źródło
NullPointerException
na tej liniiactionBarTextView.setTextColor(Color.RED);
getIndentifier()
, możesz(TextView) findViewById(com.actionbarsherlock.R.id.abs__action_bar_title);
najpierw zajrzeć do niego (sprawdź, czy nie jest to wartość zerowa).Toolbar toolbar = findViewById(R.id.toolbar);
gdzie w pliku układu xml jest on otoczonycom.google.android.material.appbar.AppBarLayout
elementem, a następnietoolbar.setTitleTextColor( getResources().getColor( R.color.colorViolet ) );
To stary temat, ale dla przyszłych czytelników korzystanie z paska narzędzi sprawia, że wszystko jest bardzo łatwe:
źródło
zrobiłem z prostym kodem jednej linii
źródło
Dodaj go do katalogu głównego paska akcji. Miałem ten problem.
actionMenuTextColor - zmienia kolor tekstu na pasku akcji, nigdy nie działał, gdy był częścią
Widget.Styled.ActionBar
, więc musiałem dodać go do katalogu głównego. Pozostałe 2 atrybuty zmieniają tytuł i podtytuł paska akcji.źródło
Ustawienie ciągu HTML na pasku akcji nie działa w kompozycji Material w SDK v21 +
Jeśli chcesz to zmienić, ustaw podstawowy kolor tekstu w pliku style.xml
źródło
Najprostszym sposobem jest zrobienie tego w pliku styles.xml.
Szablon Google styles.xml obecnie generuje następujące elementy:
Jeśli dodasz jeszcze jedną linię przed tagiem zamykającym, jak pokazano, to zmieni kolor tekstu na taki, jaki powinien być z Dark ActionBar:
Jeśli chcesz dostosować kolor do czegoś innego, możesz określić własny kolor w colors.xml lub nawet użyć wbudowanego koloru z Androida, używając atrybutu android: textColorPrimary:
Uwaga: Zmienia to kolor tytułu, a także tytuły dowolnych elementów menu wyświetlanych na pasku ActionBar.
źródło
Jeśli chcesz też stylizować napisy, dodaj je w swoim własnym stylu.
Ludzie, którzy chcą uzyskać taki sam wynik dla
AppCompat
biblioteki, to właśnie tego użyłem:źródło
<item name="android:titleTextStyle">
a<item name="titleTextStyle">
ponieważ korzystałem z biblioteki obsługi aplikacji appcompat.Znalazłem sposób, aby to zrobić ładnie, bez tworzenia własnego układu interfejsu API> = 21.
Koloruje tylko teksty i kontroluje rysunki wewnątrz paska akcji.
Mam nadzieję, że przyda się komuś.
źródło
Wiele odpowiedzi jest nieaktualnych, więc zaktualizuję wątek i pokażę, jak zmienić kolor tekstu i kolor tła w ActionBar (pasku narzędzi) oraz w wyskakującym menu ActionBar.
Najnowsze podejście w Androidzie (od maja 2018 r.) W pracy z paskiem akcji (pasek narzędzi) polega na użyciu motywu z NoActionBar i zamiast tego na pasku narzędzi.
oto czego potrzebujesz:
W działaniu (który rozszerza AppCompatActivity) zadeklaruj pasek narzędzi:
Dodaj pasek narzędzi w układzie xml działania. Tutaj ustawimy niestandardowe (nadpisane motywy), notatkę
android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
iapp:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu"
, zrobią to samo.W pliku styles.xml musisz zastąpić te dwa style, aby ustawić niestandardowe kolory:
To wszystko ludzie
ps, jeśli mnie zapytasz, powiedziałbym: TAK, cała ta sprawa jest cholernie nieładna.
źródło
To jest rozwiązanie, którego użyłem po sprawdzeniu wszystkich odpowiedzi
Zmień wymagane kolory, które będą działać
źródło
Ta funkcja działa dobrze
następnie, aby go użyć, po prostu podaj mu pasek akcji i nowy kolor, tj
źródło
Spróbuj dodać to w swoim działaniu onCreate. Działa na prawie każdej wersji Androida.
lub
źródło
Wypróbuj wiele metod, w niskiej wersji API, wykonalną metodą jest
<item name="actionMenuTextColor">@color/your_color</item>
i nie używaj przestrzeni nazw Androida, mam nadzieję, że może ci pomócps:
źródło
po prostu włóż to do swojego stylu.
<item name="android:textColorPrimary">@color/yourcolor</item>
źródło
Dobrym rozwiązaniem jest użycie SpannableStringBuilder i ustawienie koloru w ten sposób. Możesz nawet używać różnych kolorów na różnych częściach sznurka, dodawać obrazy itp.
Testowane z nową biblioteką wsparcia.
Zobacz Android: Kolorowanie części ciągu za pomocą TextView.setText ()?
źródło
To nie jest zalecane rozwiązanie, ponieważ przechodzę tutaj w Android api, ale ponieważ moja aplikacja wymaga dynamicznej zmiany motywu na warunkach xml tutaj niemożliwych, więc muszę to zrobić. Ale to rozwiązanie działa bardzo dobrze.
Rozwiązanie:--
źródło
W przypadku Androida 5 (Lollipop) będziesz musiał użyć Androida: actionBarPopupTheme, aby ustawić textColor dla menu przepełnienia.
źródło
Najprostszym sposobem jest:
Dodaj te dwie linie do pliku styles.xml
Zastąp kolor swoim kolorem.
źródło
możesz zmienić kolor dowolnego tekstu za pomocą atrybutu HTML
<font>
bezpośrednio wxml
plikach. na przykład wstrings.xml
:źródło