Android AlertDialog déplacer PositiveButton à droite et NegativeButton à gauche

je suis nouveau avec android.

actuellement je veux montrer un AlertDialog boîte avec les boutons 'OK' et 'Cancel'.

la valeur par défaut est PositiveButton: Left, NegativeButton: Right

pouvez-vous me faire savoir comment je peux déplacer le bouton positif sur le côté droit et négatif sur le côté gauche?

y a-t-il une chance/problème si Negativebutton provoque un mauvais son en appuyant sur OK, si nous changeons le texte "OK" en NegativeButton & "Cancel" en PositiveButton.

Mon Code:

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();

Merci, Ange

16
demandé sur user1866128 2012-11-30 15:32:43

7 réponses

Ce ne serait pas une réponse directe. Mais juste quelques informations sur le sujet. À partir de fil dans le propre forum de Google, a dit Romain guy..

Aller de l'avant l'ordre de positif/négatif boutons sera un utilisé dans ICS.

et la convention par version de l'OS est

  • sur les appareils avant Honeycomb, l'ordre des boutons (de gauche à droite) était POSITIF-NEUTRE-NÉGATIF.
  • sur les nouveaux appareils en utilisant le thème Holo, l'ordre des boutons à droite) est maintenant négatif - neutre - positif.

si c'est une convention, que android/Google veut suivre, n'est-il pas préférable que vous suiviez la même chose, puisque vos utilisateurs ne seront pas utiliser votre application seul. Après tout, la convivialité est la première chose qu'un développeur de recherche..

35
répondu Krishnabhadra 2012-11-30 11:42:07
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();

mais je recommande de suivre la convention sauf si vous avez une bonne raison de changer l'ordre. Cela facilitera l'utilisation de votre application par les utilisateurs.

3
répondu Caner 2012-11-30 11:51:10

Il n'y a aucun moyen de changer le paramètre diffault dans android Mais vous pouvez changer le texte ok à cancle définissez l'incrodulation fonctionnelle de ce

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();
0
répondu Mohd Saleem 2012-11-30 11:46:27

cochez cette 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);
0
répondu mapleleaf 2016-02-19 12:06:49

une façon très simple de déplacer les boutons de la AlertDialog sur le côté droit est de cacher le leftSpacer, un LinearLayout dans le XML de base qui gère la mise en page par défaut.

// 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);
0
répondu Cawfree 2017-03-03 09:01:30

j'ai compris qu'il y a un espace entre le neutral button et buttonBarLayout dans lequel les boutons.

donc, au début nous devons enlever cet espace et / ou le rendre visible GONE (invisible va la laisser encore un espace dans le buttonBarLayout) aussi mieux vaut utiliser la méthode onShowListner que de faire cela après avoir montré le dialogue par:

 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);
        }
 });

puis le reste est votre conception, souhaitent que leur aide

0
répondu Dasser Basyouni 2017-03-27 14:49:06

ce n'est pas la façon la plus élégante mais elle fera ce que vous voulez

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();

il suffit de faire le Cancel bouton positif et le Ok bouton comme négatif.

-1
répondu Ankush 2012-11-30 11:38:33