Tho*_*mas 6 android soft-keyboard
我正在编写一个以全屏横向模式运行的Android游戏,并在窗口的左下角和右下角放置了按钮.问题是其中一个按钮是(在许多手机上)菜单按钮旁边,因此播放器可能会意外按下菜单.
如果短暂按下,我只需暂停游戏并显示游戏内菜单.没问题.
但如果按下按钮的时间更长,Android会打开屏幕下半部分的软键盘.由于它阻碍了,并且在此Activity中完全没用,我想禁用它.
我尝试了以下方法.
由于我只有一个视图(a GLSurfaceView)我在我的尝试中Activity.onCreate():
InputMethodManager imm = ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE));
imm.hideSoftInputFromInputMethod(glSurfaceView.getApplicationWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
它不起作用:菜单长按时软键盘仍然出现.
我把它添加到我的清单中:
<activity
android:windowSoftInputMode="stateAlwaysHidden"
>
Run Code Online (Sandbox Code Playgroud)
还有很多东西.
那么......还有办法吗?怎么样?
Tho*_*mas 12
至少,这是我当前问题的解决方案.无论按下按钮多长时间,它都会显示游戏内菜单.
@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);
}
Run Code Online (Sandbox Code Playgroud)
但感觉就像是黑客,所以我希望有人能提出更好的解决方案.
但如果按住按钮的时间更长,Android 会在屏幕下半部分打开软键盘。
你有什么手机?你确定吗?我从来没有见过这种情况发生,我只是尝试了一下,但它在我的手机上不起作用。
另外,这听起来像是一个用户问题。不要试图颠覆用户。如果用户真的想在您的应用程序中打开键盘,您应该让他们打开,如果没有用,他们会回击,键盘就会消失。
更令人担忧的问题应该是您的按钮离菜单按钮太近了。
| 归档时间: |
|
| 查看次数: |
6575 次 |
| 最近记录: |