Je suis nouveau avec Android.
Actuellement, je souhaite afficher une boîte AlertDialog
avec les boutons "OK" et "Annuler".
La valeur par défaut est PositiveButton: Left, NegativeButton: Right.
Pouvez-vous me faire savoir comment puis-je déplacer le bouton positif vers le côté droit et le bouton négatif vers le côté gauche?
Existe-t-il un risque/problème si Negativebutton provoque un son de mauvaise qualité lorsque vous appuyez sur OK, si Nous modifions 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, Angel
Cela pourrait ne pas être une réponse directe. Mais juste quelques informations sur un sujet connexe. De this fil dans le propre forum de Google, Romain a dit mec ..
À l'avenir, l'ordre des boutons positifs/négatifs sera celui Utilisé dans le SCI.
et la convention par version du système d'exploitation est
S'il s'agit d'une convention qu'Android/Google souhaite suivre, ne faites-vous pas de même, car vos utilisateurs n'utiliseront pas votre application seuls. Après tout, la convivialité est la première chose que recherche un développeur.
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 vous recommande d’accepter la convention à moins que vous n’ayez une bonne raison de changer l’ordre. Cela facilitera l'utilisation de votre application par les utilisateurs.
Il n’existe aucun moyen de modifier le paramètre par défaut sous Android . Vous pouvez toutefois modifier le texte pour annuler .
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();
vérifier ceci 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);
J'ai compris qu'il y avait une disposition d'espace entre le neutral button
et le -ve/+ve buttons
avec la place "1" dans la buttonBarLayout
dans laquelle les boutons.
Donc, au début, nous devons supprimer cet espace et/ou rendre sa visibilité GONE
(invisible
le laissera prendre un espace dans la buttonBarLayout
) et nous ferions mieux d'utiliser la méthode onShowListner qu'après avoir montré le dialogue:
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);
}
});
alors le reste est votre conception, souhait qui aide
Un moyen très simple de décaler les boutons de la variable AlertDialog
vers la droite consiste à masquer la variable leftSpacer
, une variable LinearLayout
du code XML principal qui gère la présentation 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);