Кодовое название обложки клавиатуры - PullRequest
2 голосов
/ 24 июня 2019

У меня есть приложение Android с текстовым полем. Когда я начинаю печатать, клавиатура выдвигает фоновое изображение вверх.

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

Изменение макета на BoxLayout или BorderLayout не влияет на положение фонового изображения, равно как и изменение прокрутки:

container.setScrollableY(false);
form.setScrollableY(false);

Как бы я смог сохранить изображение на месте?

Еще одна вещь, которую я не смог выяснить, это доступ к форме с курсором, уже находящимся в TextField и видимой клавиатуре, установив:

textField.requestFocus();

Но это также не дает желаемого эффекта.

Любая помощь будет оценена.

enter image description here

Ответы [ 2 ]

2 голосов
/ 25 июня 2019

В дополнение к ответу Shai, вы можете попробовать поместить родительский контейнер TextField в север контейнера BorderLayout и контейнер изображений в center . Это может как-то заставить клавиатуру скользить по изображению в центре.

Чтобы ответить на часть редактирования TextField при отображении формы, добавьте ниже в форму TextField

form.setEditOnShow(textField);

Если у вас уже есть текст в TextField, вы можете установить ниже, чтобы поместить курсор в конец:

CN.callSerially(() -> {
    textField.setCursorPosition(textField.getText().length());
    form.repaint(); // optional form repainting
});
1 голос
/ 25 июня 2019

Текстовые поля должны быть в прокручиваемом родителе.

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

Это может привести к нюансам в поведении при изменении размера экрана.

...