Simple Dialog 有 material 组件吗?

Is there a material component for Simple Dialog?

如前所述here,在不同类型的对话框下,列出了简单对话框。是否有一个对话框生成器可以自动生成这样的对话框?它只是一个带有自定义主题的警告对话框吗? 我想复制一个类似于 Android 10 中使用的新权限对话框的对话框。 我尝试使用 material 警报对话框生成器:

new MaterialAlertDialogBuilder(context)
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton("Ok", null)
            .setNegativeButton("Ok", null)
            .show();

但这显示的是水平选项,而我想垂直显示。 我的应用程序中有许多自定义对话框,因此我可以完全根据需要创建另一个对话框,但我想更好地了解可以与 material 组件一起使用的内容。

出于这个原因,我从 github 下载了 material-components-android 项目,我在其中找到了列出不同类型对话框的 DialogMainDemoFragment。比较接近我想要的是这样创建的:

addDialogLauncher(
        dialogLaunchersLayout,
        R.string.long_title_message_too_long_actions,
        new MaterialAlertDialogBuilder(getContext())
            .setTitle(getResources().getString(R.string.long_title))
            .setMessage(message)
            .setPositiveButton(getResources().getString(R.string.too_long_positive), null)
            .setNegativeButton(getResources().getString(R.string.too_long_negative), null)
            .setNeutralButton(getResources().getString(R.string.too_long_neutral), null));

其中

private void addDialogLauncher(
      ViewGroup viewGroup, @StringRes int stringResId, AlertDialog.Builder alertDialogBuilder) {
    MaterialButton dialogLauncherButton = new MaterialButton(viewGroup.getContext());
    dialogLauncherButton.setOnClickListener(v -> alertDialogBuilder.show());
    dialogLauncherButton.setText(stringResId);
    viewGroup.addView(dialogLauncherButton);
  }

但我看不到 styling/theming 的确定位置。

有 material 个主题,您可以覆盖其值。 如果我没记错的话你确实需要那些样式

    <style name="MaterialAlertDialog.MaterialComponents.Title.Panel.CenterStacked" parent="Base.MaterialAlertDialog.MaterialComponents.Title.Panel">
       <item name="android:orientation">vertical</item>
    </style>