Zacząłem więc używać nowego Snackbar w bibliotece Design Support Library, ale odkryłem, że kiedy definiujesz „android: textColor” w swoim motywie, dotyczy to koloru tekstu paska przekąskowego. Jest to oczywiście problem, jeśli podstawowy kolor tekstu jest ciemny.
Czy ktoś wie, jak to obejść lub ma radę, jak pokolorować tekst?
EDYCJA Styczeń 2017: (Po odpowiedzi)
Chociaż istnieje kilka niestandardowych rozwiązań, które rozwiązują ten problem poniżej, prawdopodobnie dobrze jest zapewnić właściwy sposób tworzenia motywów barów przekąskowych.
Po pierwsze, prawdopodobnie nie powinieneś w ogóle definiować android:textColor
w swoich motywach (chyba że naprawdę znasz zakres tego, czego używa motyw). To ustawia kolor tekstu w zasadzie każdego widoku, który łączy się z Twoim motywem. Jeśli chcesz zdefiniować kolory tekstu w widokach, które nie są domyślne, użyj android:primaryTextColor
tego atrybutu i odwołaj się do niego w widokach niestandardowych.
Jednak aby zastosować motywy do Snackbar
, zapoznaj się z przewodnikiem dotyczącym jakości z dokumentu materiału strony trzeciej: http://www.materialdoc.com/snackbar/ (Postępuj zgodnie z implementacją motywu programowego, aby nie opierać się na stylu xml)
Na przykład:
// create instance
Snackbar snackbar = Snackbar.make(view, text, duration);
// set action button color
snackbar.setActionTextColor(getResources().getColor(R.color.indigo));
// get snackbar view
View snackbarView = snackbar.getView();
// change snackbar text color
int snackbarTextId = android.support.design.R.id.snackbar_text;
TextView textView = (TextView)snackbarView.findViewById(snackbarTextId);
textView.setTextColor(getResources().getColor(R.color.indigo));
// change snackbar background
snackbarView.setBackgroundColor(Color.MAGENTA);
(Możesz także tworzyć własne niestandardowe Snackbar
układy, zobacz powyższy link. Zrób to, jeśli ta metoda wydaje się zbyt hakerska i chcesz z pewnością niezawodny sposób, aby Twój niestandardowy Snackbar był ostatni dzięki możliwym aktualizacjom biblioteki wsparcia).
Alternatywnie, zapoznaj się z odpowiedziami poniżej, aby uzyskać podobne i być może szybsze odpowiedzi, aby rozwiązać problem.
android:textColorPrimary