Android alerttdialog настроить пользовательский вид для соответствия родительскому - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь создать AlertDialog с EditText, высота которого соответствует всему диалоговому окну. возможно ли это сделать без создания настраиваемого макета?

что я пытаюсь:

final EditText inputImports = new EditText(getContext());
                    inputImports.setMaxLines(500);
                    inputImports.setInputType(TYPE_TEXT_FLAG_NO_SUGGESTIONS);

                    AlertDialog alert = new AlertDialog.Builder(this.getContext()).setTitle(R.string.importar).setMessage(R.string.importCustomList).setView(inputImports).setCancelable(false).setNegativeButton(R.string.cancel, null).create();
                    alert.setOnShowListener(dialog12 -> {
                        ((AlertDialog) dialog12).getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
                        inputImports.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
                        inputImports.requestLayout()
                    });
                    alert.show();

это делает диалоговое окно соответствует высоте телефона, но текст редактирования по-прежнему отображается как однострочный текст редактирования

enter image description here

я бы хотел, чтобы текст редактирования занимал как можно больше пространства окна

========= ===================== ОБНОВЛЕНИЕ ============================ ======

Другое дело, что когда отображается клавиатура, кнопка действия не добавляет новую строку, это просто какая-то кнопка OK.

Я хочу очень простой диалог alerttdialog с многострочным редактированием текста ... почему так сложно

enter image description here

1 Ответ

0 голосов
/ 25 мая 2020

Добавить LayoutParams для Edittext

final EditText inputImports = new EditText(getContext());
inputImports.setMaxLines(500);
inputImports.setInputType(TYPE_TEXT_FLAG_NO_SUGGESTIONS);
inputImports.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));

Edit

заменить

   inputImports.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;

на

   inputImports.getLayoutParams().height =  ((AlertDialog) dialog12).getWindow().getDecorView().getHeight();
...