需要打开附加到一个视图的键盘并将键事件委托给edittext,但是在聚焦时不需要将键盘附加到EditText。我试过这段代码:
清单中的
<activity android:windowSoftInputMode="adjustPan|stateAlwaysHidden" />
码
InputMethodManager inputMethodManager = (InputMethodManager) rootView.getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_FORCED);
view.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int keycode, KeyEvent keyEvent) {
switch (keyEvent.getAction()){
case KeyEvent.ACTION_UP:
editText.onKeyUp(keycode, keyEvent);
break;
case KeyEvent.ACTION_DOWN:
editText.onKeyDown(keycode, keyEvent);
break;
}
return true;
}
});
一切正常(键盘正在显示),但是当edittext获得焦点时 - 所有逻辑都被破坏(keybord在edittext上重新显示);
editext.requestFocus();
专注于编辑处理选择所需的文本以及其他依赖于焦点的事物。
任何帮助对我都很重要,谢谢你;
更新 无需隐藏键盘,所需的步骤:
答案 0 :(得分:2)
如果这是您正在使用的活动,您可以使用清单中的以下行来隐藏创建时的键盘。
<activity
android:name=".YourActivityName"
android:windowSoftInputMode="stateHidden"></activity>
答案 1 :(得分:1)
创建一个函数:
/* Hides keyboard, if diaplayed */
public void hideKeyboard(){
View currentFocus = MainAcitivty.this.getCurrentFocus(); // Change the name according to your activity's name.
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(MainActivity.this.INPUT_METHOD_SERVICE);
if(currentFocus != null){
inputMethodManager.hideSoftInputFromWindow(currentFocus.getWindowToken(),0);
currentFocus.clearFocus();
}
}
并从您想要隐藏键盘的地方调用上述功能。
希望这会有所帮助......