Dodałem projekt materiału appCompat do mojej aplikacji i wygląda na to, że okna dialogowe z ostrzeżeniami nie używają moich kolorów podstawowych, podstawowych, ciemnych ani akcentujących.
Oto mój styl podstawowy:
<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/apptheme_color</item>
<item name="colorPrimaryDark">@color/apptheme_color_dark</item>
<item name="colorAccent">@color/apptheme_color</item>
<item name="android:textColorPrimary">@color/action_bar_gray</item>
</style>
Zgodnie z moim zrozumieniem, tekst przycisków dialogów powinien również używać tych kolorów. Czy źle rozumiem, czy jest jeszcze coś, co muszę zrobić?
Rozwiązanie:
Zaznaczona odpowiedź zaprowadziła mnie na właściwy tor.
<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/apptheme_color</item>
<item name="colorPrimaryDark">@color/apptheme_color_dark</item>
<item name="colorAccent">@color/apptheme_color</item>
<item name="android:actionModeBackground">@color/apptheme_color_dark</item>
<item name="android:textColorPrimary">@color/action_bar_gray</item>
<item name="sdlDialogStyle">@style/DialogStyleLight</item>
<item name="android:seekBarStyle">@style/SeekBarNavyTheme</item>
</style>
<style name="StyledDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="colorPrimary">@color/apptheme_color</item>
<item name="colorPrimaryDark">@color/apptheme_color_dark</item>
<item name="colorAccent">@color/apptheme_color</item>
</style>
android
material-design
android-support-library
android-appcompat
material-components-android
Mateusz
źródło
źródło
Odpowiedzi:
ZAKTUALIZOWANO w sierpniu 2019 r. Z biblioteką Material Components for Android:
Dzięki nowej bibliotece Material Components for Android możesz korzystać z nowej
com.google.android.material.dialog.MaterialAlertDialogBuilder
klasy, która jest rozszerzeniem istniejącejandroidx.appcompat.AlertDialog.Builder
klasy i zapewnia obsługę najnowszych specyfikacji Material Design.Po prostu użyj czegoś takiego:
Możesz dostosować kolory rozszerzające
ThemeOverlay.MaterialComponents.MaterialAlertDialog
styl:Aby zastosować własny styl, użyj konstruktora:
Aby dostosować przyciski, tytuł i treść, sprawdź ten post, aby uzyskać więcej informacji.
Możesz także globalnie zmienić styl motywu aplikacji:
WSPARCIE LIBRARY i APPCOMPAT THEME:
Dzięki nowemu
AppCompat v22.1
możesz korzystać z nowego android.support.v7.app.AlertDialog .Po prostu użyj takiego kodu:
I użyj takiego stylu:
W przeciwnym razie możesz zdefiniować w bieżącym motywie:
a następnie w swoim kodzie:
Tutaj AlertDialog na KitKat:
źródło
<item name="android:alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
podczas inicjowania konstruktora okien dialogowych podaj drugi parametr jako motyw. Automatycznie pokaże projekt materiału z poziomem API 21.
lub,
źródło
AppCompat nie robi tego w przypadku okien dialogowych (przynajmniej jeszcze nie)
EDYCJA: teraz. upewnij się, że używasz
android.support.v7.app.AlertDialog
źródło
import app.AlertDialog
appCompat. Próbowałem dowiedzieć się, co jest nie tak przez około 40 minut, zanim faktycznie to sprawdzę ... Cholera Google!Możesz rozważyć ten projekt: https://github.com/fengdai/AlertDialogPro
Zapewnia prawie takie same okna dialogowe z alertami, jak w przypadku Lollipopa. Zgodny z systemem Android 2.1.
źródło
Możesz użyć
Biblioteka Material Design
Biblioteka Material Design została stworzona dla dość ostrzegawczych okien dialogowych , przycisków i innych rzeczy, takich jak batoniki. Obecnie jest mocno rozwinięty.
Przewodnik, kod, przykład - https://github.com/navasmdc/MaterialDesignLibrary
Przewodnik, jak dodać bibliotekę do Android Studio 1.0 - Jak zaimportować bibliotekę Material Design do Android Studio?
.
Miłego kodowania;)
źródło
Wypróbuj tę bibliotekę:
https://github.com/avast/android-styled-dialogs
Jest oparty na
DialogFragments
zamiastAlertDialogs
(jak ten z @afollestad). Główna zaleta: dialogi nie zamykają się po rotacji, a wywołania zwrotne nadal działają.źródło
Z jakiegoś powodu android: textColor wydaje się aktualizować tylko kolor tytułu. Możesz zmienić kolor tekstu wiadomości za pomocą pliku
źródło
Okna dialogowe ostrzeżeń dotyczących stylów Material Design: niestandardowa czcionka, przycisk, kolor i kształt, ...
Styl:
Wynik:
źródło