gpt4 book ai didi

android - 如何防止软键盘出现在我的 Activity 中?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:29:44 25 4
gpt4 key购买 nike

我正在编写一款以全屏横向模式运行的 Android 游戏,按钮位于窗口的左下角和右下角。问题是这些按钮之一(在许多手机上)就在“菜单”按钮旁边,因此玩家可能会不小心按到“菜单”。

如果短暂按下,我会暂停游戏并显示游戏内菜单。没问题。

但是如果按住按钮的时间更长,Android 会在屏幕的下半部分打开软键盘。因为它妨碍了,并且在这个 Activity 中完全没用,所以我想禁用它。

我尝试了以下方法。

通过 InputMethodManager

发件人:Hide soft keyboard on activity without any keyboard operations

因为我只有一个 View (一个 GLSurfaceView),所以我在我的 Activity.onCreate() 中尝试了这个:

InputMethodManager imm = ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE));
imm.hideSoftInputFromInputMethod(glSurfaceView.getApplicationWindowToken(), 0);

它不起作用:软键盘仍然出现在菜单长按上。

通过AndroidManifest.xml

发件人:How to stop the android soft keyboard from ever coming up in my entire application

我将此添加到我的 list 中:

<activity 
android:windowSoftInputMode="stateAlwaysHidden"
>

也有很多什么都不做。

那么……有什么办法吗?怎么办?

最佳答案

至少,这是解决我眼前问题的方法。无论按下按钮多长时间,它都会显示游戏内菜单。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
// From the docs:
// "Note that in order to receive this callback, someone in the event [chain]
// must return true from onKeyDown(int, KeyEvent) and call startTracking() on the event."
if (keyCode == KeyEvent.KEYCODE_MENU) {
// Override default handling, and don't pop up the soft keyboard.
return true;
}
return super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
openOptionsMenu();
return true;
}
return super.onKeyUp(keyCode, event);
}

但这感觉像是 hack,所以我希望有人能提出更好的解决方案。

关于android - 如何防止软键盘出现在我的 Activity 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4681743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com