全宽按钮材质对话框

Swe*_*lla 8 android android-dialog material-design android-5.0-lollipop

我正在尝试找到一个示例代码来实现具有全宽按钮的材质对话框,如下面的屏幕截图所示.

有人可以通过分享有关如何复制此设计的示例代码来提供帮助吗? 在此输入图像描述

And*_*y T 7

您可以通过仅使用AppCompat实现这一点,请检查我的解决方法:

    import android.support.v7.app.AlertDialog;

    AlertDialog.Builder builder;
    builder = new AlertDialog.Builder(context, R.style.StackedAlertDialogStyle);
    builder.setTitle("Title");
    builder.setMessage("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc dignissim purus eget gravida mollis. Integer in auctor turpis. Morbi auctor, diam eget vestibulum congue, quam arcu pulvinar dui, blandit egestas erat enim non ligula." +
            " Nunc quis laoreet libero. Aliquam consectetur nibh eu arcu eleifend efficitur.");
    builder.setPositiveButton("Positive Button", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    builder.setNeutralButton("Neutral Button", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    builder.setNegativeButton("Cancel Button", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
        try{
            final Button button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
            LinearLayout linearLayout = (LinearLayout) button.getParent();
            linearLayout.setOrientation(LinearLayout.VERTICAL);
        } catch(Exception ex){
            //ignore it
        }
Run Code Online (Sandbox Code Playgroud)

样式

<style name="StackedAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="buttonBarButtonStyle">@style/StackedButtonBarButtonStyle</item>
</style>

<style name="StackedButtonBarButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
    <item name="android:layout_gravity">right</item>
</style>
Run Code Online (Sandbox Code Playgroud)

结果

堆叠警报对话框

  • 不是很好,是android sdk,不提供api根据材料指南修改警告对话框.当然可以更改内部实现,但是如果你要更新appcompat版本,你需要检查更新后对话框是否正常工作 - 但这是解决方法,它可能有局限性. (2认同)