如何防止软件键盘弹出?

5

我在我的应用程序中有自己的按键盘,因此我希望在特定的活动和对话框中始终隐藏软件键盘。 我尝试了两个选项:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

这段代码可以防止键盘在开始时弹出,但当我点击文本框时,键盘仍然会弹出。

InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

这段代码可以隐藏键盘,但并不能阻止键盘弹出。
请帮忙!

请查看此链接:https://dev59.com/0mw05IYBdhLWcg3wXAmF#7291121 - Lalit Poptani
谢谢,但我有一个不同的问题...我想从一开始就隐藏键盘并防止它无论如何弹出。 - Han
1个回答

8

终于搞定了!

我使用了

public void supressKeyboard() {
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
}

对于我想要禁止键盘的活动(您可以将其放在所有其他活动继承的通用活动中)

但这并不能防止在单击EditText文本框时弹出键盘。我的做法是消耗了文本框的onTouch事件:

@Override
public boolean onTouchEvent(MotionEvent event) {
    return true;
}

那是我也使用的技巧。 - castle1971
1
如何使光标显示出来?又或者说,该怎么做呢?每当我阻止触摸事件时,它都会防止光标的显示。 - Ginger McMurray
这篇文章有点旧了,但是我想知道,你还能用硬件键盘输入吗? - Danish Ashfaq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接