Android AlertDialog Mueva PositiveButton a la derecha y NegativeButton a la izquierda
Soy nuevo con android.
Actualmente quiero mostrar un cuadro AlertDialog
con los botones 'Aceptar' y 'Cancelar'.
- Diálogo de alerta personalizado con RecyclerView
- Utilizar el cuadro de diálogo de configuración predeterminada de Android en ON de mi aplicación
- AlertDialog con vista personalizada: redimensionar para ajustar el contenido de la vista
- AlertDialog vs AlertDialog.Builder
- El método getWindow () no está definido para el tipo AlertDialog.Builder
El valor predeterminado es PositiveButton: Left, NegativeButton: Right
¿Puedes decirme cómo puedo mover el PositiveButton al lado derecho y NegativeButton al lado izquierdo?
¿Hay alguna posibilidad / problema si el botón negativo causa un sonido negativo al presionar OK, si cambiamos el texto "OK" a NegativeButton y "Cancelar" a PositiveButton.
Mi código:
AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext()); builder.setMessage("Confirmation?") .setCancelable(false) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //Todo dialog.cancel(); } }) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //TOdo } }) dialog = builder.create();
Gracias Angel
- Recursos $ NotFoundException: Resource ID # 0x0 en AlertDialog
- Cómo alinear el centro de diálogo personalizado en android?
- Acerca de Android Progress Dialog. ¿Evitar?
- Android - Estilo AlertDialog
- Diálogo de alerta único para toda la aplicación
- Android: Custom AlertDialog
- Cómo configurar parte del texto en negrita cuando se utiliza AlertDialog.setMessage () en Android?
- DialogFragment: Utilizar AlertDialog con diseño personalizado
Esto podría no ser una respuesta directa. Pero sólo una cierta información sobre el tema relacionado. De este hilo en el propio foro de Google, Romain guy dijo ..
Avanzando el orden de los botones positivos / negativos será el que se utiliza en ICS.
Y la convención por versión del sistema operativo es
- En los dispositivos anteriores a Honeycomb, el orden de los botones (de izquierda a derecha) era POSITIVO – NEUTRO – NEGATIVO.
- En los dispositivos más nuevos que utilizan el tema Holo, el orden de los botones (de izquierda a derecha) es ahora NEGATIVO – NEUTRO – POSITIVO.
Si es una convención, que android / Google quiere seguir, no es mejor que siga el mismo, ya que sus usuarios no van a utilizar su aplicación solo. Después de todo, la facilidad de uso es lo primero que busca un desarrollador.
AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext()); builder.setMessage("Confirmation?") .setCancelable(false) .setNegativeButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //TOdo } }) .setPositiveButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //TOdo dialog.cancel(); } }) diaglog = builder.create();
Pero yo recomiendo ir junto con la convención a menos que tenga una buena razón para cambiar el orden. Eso facilitará a los usuarios el uso de su aplicación.
No hay manera de cambiar la configuración deffault en android Pero puede cambiar el texto ok para cancle establecer el funcionalmente accroding este
AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext()); builder.setMessage("Confirmation?") .setCancelable(false) .setNegativeButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //TOdo } }) .setPositiveButton("CANCEL", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //TOdo dialog.cancel(); } }); dialog = builder.create();
Compruebe esta https://github.com/hslls/order-alert-buttons
dependencies { compile 'com.github.hslls:order-alert-buttons:1.0.0' } AlertDialogParams params = new AlertDialogParams(); params.mTitle = "title"; params.mMessage = "message"; params.mPositiveText = "Ok"; params.mNegativeText = "Cancel"; params.mCancelable = true; params.mAlign = BUTTON_ALIGN.POSITIVE_BUTTON_LEFT; // fix button position params.mClickListener = new AlertDialogClickListener() { @Override public void onPositiveClicked() { } @Override public void onNegativeClicked() { } }; AlertDialog dialog = AlertDialogBuilder.createAlertDialog(this, params);
Una forma muy sencilla de cambiar los botones de AlertDialog
a la derecha es ocultar el leftSpacer
, un LinearLayout
dentro del núcleo XML que maneja el diseño por defecto.
// Fetch the PositiveButton final Button lPositiveButton = lDialog.getButton(AlertDialog.BUTTON_POSITIVE); // Fetch the LinearLayout. final LinearLayout lParent = (LinearLayout) lPositiveButton.getParent(); // Ensure the Parent of the Buttons aligns it's contents to the right. lParent.setGravity(Gravity.RIGHT); // Hide the LeftSpacer. (Strict dependence on the order of the layout!) lParent.getChildAt(1).setVisibility(View.GONE);
He descubierto que existe un diseño de espacio entre el neutral button
y los neutral button
-ve/+ve buttons
con el lugar "1" en el buttonBarLayout
en el que los botones.
Por lo tanto, al principio tenemos que eliminar ese espacio y o hacer su visibilidad GONE
( invisible
lo dejará todavía toma un espacio en el buttonBarLayout
) también es mejor usar el método onShowListner mejor que hacer eso después de mostrar el diálogo por:
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { Button neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL); LinearLayout view = (LinearLayout) neutralButtonOrAnyOtherBtnFromThe3Btns.getParent(); Space space= (Space) view.getChildAt(1); } });
Entonces el resto es su diseño, deseo que ayuda
Este no es el más elegante de las maneras pero hará lo que quiere
AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext()); builder.setMessage("Confirmation?") .setCancelable(false) .setNegativeButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //TOdo dialog.cancel(); } }) .setPositiveButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //TOdo } }) diaglog = builder.create();
Sólo tiene que hacer el botón Cancel
como positivo y el botón Ok
como negativo.
- La conexión a Internet en el emulador de Android muestra siempre estado conectado
- De datos en onActivityResult es nulo