ventana studio emergente ejemplo custom crear android android-5.0-lollipop android-dialog android-dialogfragment

emergente - popup android studio



Botones DialogFragment cambio de color en Lollipop (3)

values-21 / styles.xml

<style name="AppTheme" parent="..."> ... <item name="alertDialogTheme">@style/AlertDialogCustom</item> </style> <style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorAccent">@color/buttons_color</item> </style>

En Lollipop y superiores no debes usar android: prefijo

Me gustaría que mis Fragmentos se vean consistentes con el resto de la aplicación y la paleta de colores que apliqué, así que me gustaría cambiar los colores no solo del título, sino también de los botones positivo / negativo:

Intenté hacer esto así, pero desafortunadamente no funciona:

public void onStart() { super.onStart(); Dialog d = getDialog(); int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivider", null, null); View divider = d.findViewById(dividerId); if(currentapiVersion< Build.VERSION_CODES.LOLLIPOP) { divider.setBackgroundColor(getResources().getColor(R.color.accent)); LinearLayout ll = (LinearLayout) d.findViewById(R.id.dialog_background); ll.setBackgroundResource(R.drawable.backrepeat_reversed); } if(currentapiVersion == Build.VERSION_CODES.LOLLIPOP) { int buttonsId = d.getContext().getResources().getIdentifier("android:id/negativeButton", null, null); Button b = (Button) d.findViewById(buttonsId); b.setTextColor(getResources().getColor(R.color.accent)); } int textViewId = d.getContext().getResources().getIdentifier("android:id/alertTitle", null, null); TextView tv = (TextView) d.findViewById(textViewId); tv.setTextColor(getResources().getColor(R.color.accent)); }

¿Cómo cambiar el color de estos botones? Tal vez sea posible hacerlo en toda la aplicación a través del archivo styles.xml?


Para cambiar el color de los botones y casillas de verificación que se muestran en el cuadro de diálogo Alerta, puede editar:

values-21 / styles.xml

<style name="AppTheme" parent="..."> ... <item name="android:timePickerDialogTheme">@style/AlertDialogCustom</item> <item name="android:datePickerDialogTheme">@style/AlertDialogCustom</item> <item name="android:alertDialogTheme">@style/AlertDialogCustom</item> </style> <style name="AlertDialogCustom" parent="android:Theme.Material.Light.Dialog.Alert"> <item name="android:colorPrimary">#00397F</item> <item name="android:colorAccent">#0AAEEF</item> </style>

Lo que hará que los diálogos tengan el color seleccionado para el texto de los botones y las casillas de verificación:


Si puede crear el cuadro de diálogo utilizando AlertDialog lo siguiente funcionó para mí:

public class DialogTest extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return new AlertDialog.Builder(getActivity()).setTitle("Test") .setMessage("This is a dialog.") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); } @Override public void onStart() { super.onStart(); ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.RED); ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.RED); } }