Не удается отредактировать EditText Android

#java #android

#java #Android

Вопрос:

Я пытаюсь создать AlertDialog, динамически соответствующий количеству строк в W.englishList. Я добавляю EditTexts в макет сетки таким образом :

 final Activity act = this;

GridLayout lay = new GridLayout(act);
lay.setOrientation(GridLayout.VERTICAL);

int row = 1;

for (String i : W.englishList) {
        EditText text = new EditText(act);
        text.setText(i);
        LayoutParams p = new GridLayout.LayoutParams();

        p.bottomMargin = 5;
        p.width = GridLayout.LayoutParams.WRAP_CONTENT;
        p.columnSpec = GridLayout.spec(0);
        p.rowSpec = GridLayout.spec(tmp);

        text.setLayoutParams(p);
        lay.addView(text);
        row  ;
        }
//Some AlertDialog.setContentView(lay);
  

Все работает, за исключением того, что я не могу редактировать созданные Editexts, я могу сфокусировать их, скопировать их, но я не могу их редактировать (клавиатура не отображается), есть идеи?

Редактировать: я могу скопировать вставку в них.

Ответ №1:

Это происходит потому, что allert dialog блокирует клавиатуру. Вы всегда можете показывать клавиатуру:

 alertDialog.getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
  

или установите OnTouchListener для каждого EditText и покажите клавиатуру при касании:

             InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
  

и скрыть его:

                 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(input.getWindowToken(), 0);
  

Комментарии:

1. Это кажется странным, потому что у меня в приложении есть другое диалоговое окно с предупреждением, запрашивающее ввод текста, и клавиатура действительно отображается. Мне интересно, связано ли это с тем, что в другом диалоговом окне я создал окно с файлом XML?

2. Возможно, клавиатура устанавливается автоматически с помощью xml. Сейчас у меня нет возможности протестировать диалоговое окно оповещения с / без xml, но когда у меня была похожая проблема, я решил ее этим методом. Однако у меня был только один TextEdit, поэтому было проще установить OnTouchListener.