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'.

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

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.

  • AlertDialog: ¿Por qué no puedo mostrar Mensaje y Lista juntos?
  • No se puede cambiar dinámicamente un diseño de DialogFragment personalizado
  • La mejor manera de implementar varios diálogos de alertas en una actividad
  • Mostrar alerta de diálogo de una clase que no sea de actividad en android
  • Cómo descartar AlertDialog en android
  • Cómo obtener clics de botón en fragmento de host del fragmento de diálogo
  • Cómo evitar que un cuadro de diálogo se cierre cuando se hace clic en un botón
  • ¿Cómo puede inflar una presentación que contenga listview en un cuadro de diálogo de alerta?
  • Android Alert Dialog reemplaza el color azul por defecto con otro color
  • Debe llamar a removeView () en el padre del niño primero con AlertView
  • EditText en el diálogo android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.