Как показать окно редактирования текста над экраном?

У меня есть приложение, которое имеет основной макет портрета (он фиксируется как портрет), и есть одно место для ввода текста. Я хотел бы запускать, как всплывающее окно в альбомной ориентации, с фоном изображения. Я знаю, что есть виджет Popup, но любые идеи для поворота окна редактирования текста были бы замечательными. Поворот его в портретный вид (только текстовое поле), когда клавиатура будет выдвинута, также будет работать, так как будет отображаться новый экран с текстовым полем на слайде на клавиатуре.

Solutions Collecting From Web of "Как показать окно редактирования текста над экраном?"

Самое простое решение вашей проблемы – отобразить ваш EditText в отдельном dialog тематическом действии, которое вы запускаете из своей основной (фиксированной по портрету) активности.

Действие EditText не должно иметь фиксированной ориентации, поэтому оно будет вращаться, как вы ожидаете, когда вы выдвигаете клавиатуру.

Создание операции ввода текста

Создайте новый Activity, содержащий только EditText View и все, что вы хотите включить (возможно, кнопки OK / Отмена и, возможно, ярлык?). Внутри манифеста задайте свою тему Theme.Dialog .

 <activity android:name="TextEntryActivity" android:label="My Activity" android:theme="@android:style/Theme.Dialog"/> 

Затухание или размытие действий за диалогом выполняется путем изменения свойств окна переднего плана (диалог ввода текста). Внутри метода onCreate используйте getWindow().setFlags применяет размытие к любому фону.

 getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

Запуск и чтение введенных значений из операции ввода текста

Используйте startActivityForResult для запуска текстовой записи Activity. Внутри этого вызова Activity setResult возвращает текстовую строку, setResult в возвращаемое намерение, используя методы, описанные в этом сообщении .

Переопределите метод onActivityResult для прослушивания результата из вспомогательной активности.

Запуск запуска на клавиатуре

Вы можете запускать операцию ввода текста, когда захотите, но если вы хотите всегда отображать ее при открытии клавиатуры, вы можете зафиксировать это событие явно.

Начните с добавления атрибута android:configChanges в запись манифеста портрета Activity. Он должен быть зарегистрирован для прослушивания keyboardHidden .

 android:configChanges="keyboardHidden" 

Внутри этого действия переопределите onConfigurationChanged чтобы запустить текстовую запись Activity.

 @Override public void onConfigurationChanged(Configuration newConfig) { Intent i = new Intent(this,TextEntryActivity.class); startActivityForResult(i, STATIC_INTEGER_VALUE); } 

Вы можете проверить, чтобы клавиатура была открыта (а не скрыта), используя переменную newConfig, прежде чем запускать текстовую запись Activity.

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