我正在尝试显示软输入键盘以查看触摸事件。这条线有效:
inputManager.toggleSoftInputFromWindow(getWindowToken(),0,0);
但是这条线不起作用:
inputManager.showSoftInput(this,0);
为什么会这样?如果我想将软输入连接到视图怎么办?谢谢。
我正在尝试显示软输入键盘以查看触摸事件。这条线有效:
inputManager.toggleSoftInputFromWindow(getWindowToken(),0,0);
但是这条线不起作用:
inputManager.showSoftInput(this,0);
为什么会这样?如果我想将软输入连接到视图怎么办?谢谢。
我认为您正在模拟器上进行测试。不在真实设备上?
它不会keyboard
在 AVD 上打开,但会在没有Hard key board
.
要对其进行测试,AVD
您需要禁用键盘。
禁用键盘使用
Click on AVD manager > open you targeted AVD > Edit > Hardware > New > Keyboard Support > OK > Make it "NO"
尝试这个:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
showSoftInput()
View
除非你有焦点,否则不会工作。此外,除非您首先调用和/或设置为 true ,否则调用requestFocus()
不会让您集中注意力。View
setFocusableInTouchMode()
setFocusable()
在 onclick 事件中试试这个。
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
您需要先请求焦点并显示软输入,如下所示:
mEditTextStudy.requestFocus();
mEditTextStudy.post(
new Runnable() {
@Override
public void run() {
InputMethodManager imm =
(InputMethodManager)
getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(mEditTextStudy, SHOW_FORCED);
}
}
});