当前位置: 首页 > 知识库问答 >
问题:

如何在AlertDialog中设置正负按钮的顺序?

施阳曜
2023-03-14

我想这样做的原因完全是另一个讨论,但我需要找出最好的方法,使所有警报对话框的右侧都有积极按钮。请注意,在3.0及以下版本中,按钮通常显示为OK/Cancel,在4.0及以上版本中,按钮显示为Cancel/OK。我想以最简单的方式强制我的应用程序使用Cancel/OK。我在应用程序中有很多AlertDialogs。

共有3个答案

孟鸿德
2023-03-14

您可以扩展警报对话框。生成器要强制执行订单:

public class MyDialog extends AlertDialog.Builder {

    public MyDialog(Context arg0) {
        super(arg0);
    }

    @Override
    public Builder setPositiveButton(CharSequence text, OnClickListener listener) {
        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            return super.setNegativeButton(text, listener);
        } else {
            return super.setPositiveButton(text, listener);
        }

    }

    @Override
    public Builder setNegativeButton(CharSequence text, OnClickListener listener) {
        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            return super.setPositiveButton(text, listener);
        } else {
            return super.setNegativeButton(text, listener);
        }
    }

}
衡丰茂
2023-03-14

这是我的解决方案。这是我的工作。

    // Show alertDialog after building
    AlertDialog alertDialog = createAlertDialog(context);
    alertDialog.show();
    // and find positiveButton and negativeButton
    Button positiveButton = (Button) alertDialog.findViewById(android.R.id.button1);
    Button negativeButton = (Button) alertDialog.findViewById(android.R.id.button2);
    // then get their parent ViewGroup
    ViewGroup buttonPanelContainer = (ViewGroup) positiveButton.getParent();
    int positiveButtonIndex = buttonPanelContainer.indexOfChild(positiveButton);
    int negativeButtonIndex = buttonPanelContainer.indexOfChild(negativeButton);
    if (positiveButtonIndex < negativeButtonIndex) {
        // prepare exchange their index in ViewGroup
        buttonPanelContainer.removeView(positiveButton);
        buttonPanelContainer.removeView(negativeButton);
        buttonPanelContainer.addView(negativeButton, positiveButtonIndex);
        buttonPanelContainer.addView(positiveButton, negativeButtonIndex);
    }
桓智敏
2023-03-14

不幸的是,我不相信你能。然而,引用文件:

注意:您只能将每种按钮类型中的一种添加到AlertDialog。也就是说,您不能有多个“积极”按钮。这将可能的按钮数量限制为三个:正极、中性和负极。这些名称在技术上与按钮的实际功能无关,但可以帮助您跟踪哪个按钮起作用。

所以你可以把不同的按钮变成你想要的任何东西。您在这里看到的是已切换的顺序(根据此答案排序):

  • 在ICS之前的设备上,按钮顺序(从左到右)为正-中性-负。
  • 在使用ICS的新设备上,按钮顺序(从左到右)现在是负-中性-正。

您可以尝试检查Build。VERSION并使用它来决定运行时哪个按钮是哪个。

 类似资料:
  • 因此,我创建了一个自定义主题,并将其作为AlertDialog.Builder构造函数的参数提供。 下面是显示对话框的代码: 风格如下: 我能够找到我在样式中添加的几个属性,根据它们的状态更改单选按钮/文本的颜色。但是我无法自定义文本外观(我想更改大小、提供填充等)。 我确信有一些属性可以用来设置文本的样式,但我找不到它。有人能帮我吗?谢谢

  • 我想更改正极按钮的颜色。我该怎么做? AlerDialog: 谢谢!(我的问题在kotlin中,与do在kotlin中。)

  • 在我的活动中,我有一个listview和一个按钮。每一个都有各自的目的。 我的listview显示另一个活动中的项目详细信息。 问题是如何在相同的活动中为按钮实现onClickListener?

  • 问题内容: 我正在尝试使用以下代码设置按钮文本: 这是我的FXML: 但这行不通,我不明白为什么,还有其他人知道如何使用JavaFX设置按钮文本吗?>。>; 我觉得JavaFX不像Swing那样简单…但是无论如何,有人知道我在做什么错吗?另外,有没有人知道有什么资源可以学习FXML?我喜欢FXML而不是用Java进行编码,但是似乎没有太多的东西,我是否是世界上唯一喜欢FXML而不是JavaFX G

  • 如何在同一个字母中设置助记符解析。在我的项目中,在button中设置助记符,但button<code>setText</code>在每个事件操作中都会发生变化,但在<code>_o</code>中助记符是相同的,但短键只在一个事件中起作用。如何解决这个问题 抱歉,我的< code >英语

  • 问题内容: 我将按钮放在带有GridLayout的JPane中。然后,我使用BoxLayout.Y_AXIS将JPanel放入另一个JPanel中。我希望GridLayout中的按钮为正方形。我使用tmp.setSize(30,30),它不起作用。我也尝试使用,但我不知道X和Y是什么。那么,做这些东西的正确方法是什么? 添加: 我仍然无法解决问题。这是我正在尝试执行的代码: 问题是Java试图使宽