Есть ли материальный компонент для простого диалога? - PullRequest
0 голосов
/ 10 октября 2019

Как уже упоминалось здесь , под различными типами диалогов указан простой диалог. Есть ли конструктор диалогов, который будет автоматически генерировать такой диалог? Это просто диалоговое окно с пользовательской темой? Я хотел бы воспроизвести диалоговое окно, аналогичное новым диалоговым окнам разрешений, используемым в Android 10. enter image description here Я пытался использовать построитель диалогов с предупреждениями о материалах:

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

Но это показываетварианты по горизонтали, тогда как хотелось бы иметь их по вертикали. У меня есть много пользовательских диалогов в моем приложении, так что я мог создать еще один точно так, как мне нужно, но я хотел лучше понять, что вместо этого можно использовать с компонентами материала.

По этой причине я скачал проект material-components-android из github, где я обнаружил 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);
  }

, но я не вижу, где определяется стиль / тематика.

1 Ответ

3 голосов
/ 10 октября 2019

Есть материальная тема, значения которой вы можете переопределить. Точно, если я не ошибаюсь, вам нужны эти стили

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