Как скрыть android программную клавиатуру навсегда в JavaFX Gluon? - PullRequest
0 голосов
/ 22 января 2020

Я бы хотел скрыть экранную клавиатуру на платформе android навсегда. Если, например, я фокусируюсь на TextField, я не хочу, чтобы отображалась программная клавиша. Вы можете спросить почему? Таким образом, я не могу ввести никакой информации. Я хотел бы сделать свою собственную мягкую клавиатуру только с кнопками цифр c. К сожалению, с помощью софтовой клавиатуры по умолчанию вы можете вводить любые символы.

Я читал, что это можно сделать так:

  • Снимите фокус, например, с текстового поля. (Но я не хочу следовать этой идее, потому что она выглядит лучше, если выбранный компонент находится в фокусе)
  • Навсегда скрыть программную клавиатуру.

То, что я пробовал до сих пор:

  • Перезапись android: android:windowSoftInputMode="stateAlwaysHidden" в AndroidManifest. xml (Но это только для удаления начального фокуса, но это тоже не делает.)
  • И мой пример кода:

    public class SoftKeyboardTest extends MobileApplication {
    
        @Override
        public void init() { addViewFactory(HOME_VIEW, BasicView::new); }
    
        @Override
        public void postInit(Scene scene) {
            if (Platform.isAndroid()) {
                try {
                    IKeyboard kbs = (IKeyboard) Class.forName("AndroidKeyboardService").newInstance();
                    kbs.hide();
                } catch (ClassNotFoundException | IllegalAccessException | InstantiationException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }
    

Интерфейс для получения android класс:

public interface IKeyboard {
    void show();
    void hide();
}

Basi c просмотр:

public class BasicView extends View {
    public BasicView() {
        TextField tf = new TextField();
        setCenter(tf);
    }
}

android. java

public class AndroidKeyboardService implements IKeyboard {

    public InputMethodManager imm = null;

    public AndroidKeyboardService(){
        imm = (InputMethodManager) FXActivity.getInstance().getSystemService(Context.INPUT_METHOD_SERVICE);
    }

    @Override
    public void show() {
        // whatever
    }

    @Override
    public void hide() {
        View view = FXActivity.getViewGroup().getFocusedChild();
        view.clearFocus();

        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }

}

После того, как я установил это на Android и запустил приложение, на экран выводится программная клавиша мгновенно Решение должно быть очень простым, но я не могу найти способ его решить.

Любая помощь очень ценится!

Полезные посты, которые мне помогли:

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