Android AlertDialog按钮定位

时间:2016-07-25 14:19:21

标签: android android-layout android-alertdialog

我需要创建一个AlertDialog,它会垂直分割为两个区域:

  1. 其中一个区域(右侧)应在底部有对话框按钮(确定,取消和设置),在这些按钮顶部有另一个布局。
  2. 此对话框的左侧应该有另一个布局,例如image。
  3. 问题是,是否可能有类似的东西或所有alertDialogs必须将所有按钮放在底部?我甚至不知道从哪里开始。我试过看AlertDialog课,但可以看到任何合适的东西。

4 个答案:

答案 0 :(得分:3)

enter image description here

 AlertDialog.Builder builder = new AlertDialog.Builder(mActivity,
            R.style.MyAlertDialogStyle);
    builder.setTitle(mActivity.getResources().getString(R.string.app_name));
    builder.setCancelable(false);
    builder.setMessage(str_message);
    builder.setPositiveButton(str_btn1,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    if (listener != null) {
                        listener.onClick(null);
                    }
                }
            });
    if (str_btn2 != null) {
        builder.setNegativeButton(str_btn2,
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface,
                                        int i) {
                        if (listener2 != null) {
                            listener2.onClick(null);
                        }
                    }
                });
    }
    builder.show();

编辑:请参阅上图。你会得到这样的输出。只需创建一个对话框样式

styles.xml中的对话框样式

    <style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> <!-- Used for the buttons -->
    <item name="android:textStyle">bold</item>
    <item name="colorAccent">@android:color/holo_blue_bright</item>
    <!-- Used for the title and text -->
    <item name="android:textColorPrimary">@android:color/black</item>
    <!-- Used for the background -->
    <item name="android:background">@android:color/white</item>
</style>

答案 1 :(得分:1)

看起来您不需要AlertDialog,但是您可以使用AlertDialog来完成此操作。创建视图,然后使用AlertDialog.Builder而不调用setPositiveButton()setNegativeButton()等。

AlertDialog alertDialog = new AlertDialog.Builder(context)
        .setView(yourContentView)
        .create();

答案 2 :(得分:0)

您可以使用以下3个步骤创建自己的自定义对话框布局:

  1. 创建自定义对话框布局(XML文件)。
  2. 将布局附加到Dialog。
  3. 显示对话框。
  4. here

答案 3 :(得分:0)

恐怕为时已晚,但是一个非常简单的解决方案是:

假设您知道将按钮设置为AlertDialog的两种方法,那么我将省略此部分:

…
yourDialog.show();

Button btn = yourDialog.getButton(DialogInterface.BUTTON_NEUTRAL);//Whatever button it is.

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) btn.getLayoutParams();
params.topMargin = yourValue;//Enter your desired margin value here.
params.bottomMargin = yourValue;
params.leftMargin = yourValue;
params.rightMargin = yourValue;

btn.setLayoutParams(params);