tipos studio personalizado mensaje ejemplo edittext dialogos dialogo cuadro crear confirmación con como android material-design appcompat android-support-library android-appcompat material-components-android

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



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.



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: