LibGDX — TextField — TextInputListener

Когда вы нажимаете на TextField в LibGDX, иногда оно может оставаться за экранной клавиатурой. Вы не можете видеть, что вы печатаете. Я использую TextInputListener, чтобы избежать этой проблемы:

textPassword.setOnscreenKeyboard(new TextField.OnscreenKeyboard() {
    @Override
    public void show(boolean visible) {
        Gdx.input.getTextInput(new Input.TextInputListener() {
            @Override
            public void input(String text) {
                textPassword.setText(text);
            }

            @Override
            public void canceled() {
            }

        }, "" , "", "");
    }
});

Но таким образом ввод данных возможен в два этапа:

Шаг 1: https://i.ibb.co/vYHGrJj/1.png

Шаг 2: https://i.ibb.co/m5D3FMq/2.png

Это не удобный подход.

Можно ли пропустить первый шаг и сразу перейти ко второму?


person Happy Man    schedule 31.10.2019    source источник


Ответы (2)


В моих играх я работаю с открытием диалогового окна TextInput (Gdx.input.getTextInput), когда пользователь нажимает на текстовое поле, если нет подключения к аппаратной клавиатуре (isPeriphalAvailable). Я бы порекомендовал вам также сделать это, чтобы избежать типичных проблем.

person MrStahlfelge    schedule 01.11.2019

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

<activity
        android:name=".example"
        android:theme="@style/AppTheme.NoActionBar"
        android:windowSoftInputMode="adjustResize" />

adjustResize, adjustResize|stateHidden, adjustPan, adjustPan|adjustResize

Попробуйте их в Android Manifest.Xml, на котором работает ваше приложение. Но я не уверен, что это все еще работает на LibgdxFrame, который в основном создан с помощью бэкэнда OpenGL. Я предлагаю вам поместить диалоговое окно ближе к верхней части экрана, если это возможно.

Обратите внимание, что эта проблема может возникнуть на устройствах iOS, если вы хотите выполнить развертывание на iOS.

person Abdullah Tellioglu    schedule 31.10.2019
comment
Это на самом деле не работает на libgdx. В любом случае изменение размера редко требуется, и adjustPan иногда выталкивает ввод за пределы экрана. Так что диалог - это путь. - person Nicolas; 08.11.2019