我正在尝试显示触摸事件视图的软输入键盘。这条线路工作:
inputManager.toggleSoftInputFromWindow(getWindowToken(),0,0);
但这条线不起作用:
inputManager.showSoftInput(this,0);
为什么会这样?如果我想将软输入连接到视图,该怎么办?谢谢
我认为您正在模拟器上进行测试。不是在真正的设备上?
它不会在AVD上打开keyboard
,但会在没有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);
在onclick事件中尝试此操作。
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
showSoftInput()
不会工作,除非您的View
有焦点。此外,调用requestFocus()
不会使View
聚焦,除非您首先将setFocusableInTouchMode()
和/或setFocusable()
调用为true。
您需要首先请求焦点并显示如下软输入:
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);
}
}
});