Как уже упоминалось здесь , под различными типами диалогов указан простой диалог. Есть ли конструктор диалогов, который будет автоматически генерировать такой диалог? Это просто диалоговое окно с пользовательской темой? Я хотел бы воспроизвести диалоговое окно, аналогичное новым диалоговым окнам разрешений, используемым в Android 10. Я пытался использовать построитель диалогов с предупреждениями о материалах:
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);
}
, но я не вижу, где определяется стиль / тематика.