android - studio - Diseño de materiales sin diálogos de alerta de estilo
mensaje de confirmación android studio (7)
He agregado el diseño del material appCompat a mi aplicación y parece que los cuadros de diálogo de alerta no están usando mis colores primario, primario oscuro o de acento.
Aquí está mi estilo base:
<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>
Según tengo entendido, el texto del botón de diálogo también debe usar estos colores. ¿Estoy equivocado en mi comprensión o hay algo más que necesito hacer?
Solución:
La respuesta marcada me llevó por el buen camino.
<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>
AppCompat no hace eso para los diálogos (al menos no todavía)
EDITAR:
lo hace ahora.
asegúrese de usar
android.support.v7.app.AlertDialog
Podrías usar
Biblioteca de diseño de materiales
La Biblioteca de diseño de materiales está hecha para cuadros de diálogo , botones y otras cosas muy alertas , como bares. Actualmente está muy desarrollado.
Guía, código, ejemplo: https://github.com/navasmdc/MaterialDesignLibrary
Guía para agregar biblioteca a Android Studio 1.0 - ¿Cómo importo la biblioteca de diseño de material a Android Studio?
.
Codificación feliz;)
Por alguna razón, android: textColor solo parece actualizar el color del título. Puede cambiar el color del texto del mensaje utilizando un
SpannableString.AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.MyDialogTheme));
AlertDialog dialog = builder.create();
Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
dialog.setMessage(wordtoSpan);
dialog.show();
Prueba esta biblioteca:
https://github.com/avast/android-styled-dialogs
Se basa en
DialogFragments
lugar de
AlertDialogs
(como el de @afollestad).
La principal ventaja: los cuadros de diálogo no se descartan después de la rotación y las devoluciones de llamada siguen funcionando.
Puede considerar este proyecto: https://github.com/fengdai/AlertDialogPro
Puede proporcionarle diálogos de alerta de tema material casi igual que los de lollipop. Compatible con Android 2.1.
al inicializar el generador de diálogo, pase el segundo parámetro como tema. Mostrará automáticamente el diseño del material con API nivel 21.
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK);
o,
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
ACTUALIZADO EN AGO 2019 con los componentes de The Material para la biblioteca de Android:
Con los nuevos
componentes de Material para la biblioteca de Android
, puede usar la nueva clase
com.google.android.material.dialog.MaterialAlertDialogBuilder
, que se extiende desde la clase
androidx.appcompat.AlertDialog.Builder
existente y proporciona soporte para las últimas especificaciones de diseño de materiales.
Solo usa algo como esto:
new MaterialAlertDialogBuilder(context)
.setTitle("Dialog")
.setMessage("Lorem ipsum dolor ....")
.setPositiveButton("Ok", /* listener = */ null)
.setNegativeButton("Cancel", /* listener = */ null)
.show();
Puedes usar en tu tema algo como:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
...
<item name="materialAlertDialogTheme">@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog</item>
</style>
También puedes usar el constructor:
new MaterialAlertDialogBuilder(context, R.style.ThemeOverlay_MaterialComponents_MaterialAlertDialog)
CON BIBLIOTECA DE APOYO:
Con el nuevo
AppCompat v22.1
puede usar el nuevo
android.support.v7.app.AlertDialog
.
Solo usa un código como este:
import android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle);
builder.setTitle("Dialog");
builder.setMessage("Lorem ipsum dolor ....");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
Y usa un estilo como este:
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:background">#5fa3d0</item>
</style>
De lo contrario, puede definir en su tema actual:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- your style -->
<item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
</style>
y luego en tu código:
import android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this);
Aquí el AlertDialog en Kitkat: