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