Android AlertDialog将PositiveButton移动到右侧,NegativeButton移动到左侧

我是新的android

目前我想用“确定”和“取消”button显示AlertDialog框。

默认值是PositiveButton:Left,NegativeButton:Right

你能让我知道如何将PositiveButton移动到右侧,NegativeButton移动到左侧?

如果我们将文本“OK”改为NegativeButton并将“Cancel”改为PositiveButton,那么Negativebutton会在按下OK时导致不良的声音,是否有任何机会/故障?

我的代码:

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

谢谢你,天使

Solutions Collecting From Web of "Android AlertDialog将PositiveButton移动到右侧,NegativeButton移动到左侧"

这可能不是一个直接的答案。 但只是有关相关话题的一些信息。 从这个主题在Google自己的论坛上,Romain的家伙说。

前进的正/负button的顺序将是在ICS中使用的顺序。

而每个操作系统版本的惯例是

  • 在Honeycomb之前的设备上,button顺序(从左到右)是正面 – 中性 – 负面。
  • 在使用Holo主题的较新设备上,button顺序(从左到右)现在是NEGATIVE – NURTRAL – POSITIVE。

如果这是一个惯例,那么android / Google希望遵循这个约定,那么遵循相同的规则会更好,因为您的用户不会单独使用您的应用程序。 毕竟用户友好是开发者的首要任务

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

但是,除非您有充足的理由改变订单,否则我build议遵守惯例。 这将使用户更容易使用您的应用程序。

有没有办法改变在Android的diffault设置但是你可以改变文本确定为cancle设置functionaccroding

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

检查这个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); 

AlertDialog的buttonAlertDialog到右侧的一个非常简单的方法是隐藏处理默认布局的核心XML中的leftSpacer (一个LinearLayout

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

我发现neutral button-ve/+ve buttons之间有一个空间布局,其中buttonBarLayout中的button位置为“1”。

所以,首先我们需要删除这个空间,或者使其可见性GONEinvisible将让它仍然需要在buttonBarLayout的空间)也更好地使用方法onShowListner更好地做到这一点后,通过显示对话框:

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

那么剩下的就是你的devise,希望有所帮助

这不是最优雅的方式,但它会做你想做的

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

只要Cancelbutton为正,而Okbutton为负。