Я бы хотел скрыть экранную клавиатуру на платформе 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 и запустил приложение, на экран выводится программная клавиша мгновенно Решение должно быть очень простым, но я не могу найти способ его решить.
Любая помощь очень ценится!
Полезные посты, которые мне помогли: