我遇到了一个类似的问题,即使在切换选项卡时,键盘也会自动弹出并保持不变,平板电脑上使用的是 Android 3.2.1。使用以下方法:
public void setEditTextFocus(EditText searchEditText, boolean isFocused)
{
searchEditText.setCursorVisible(isFocused);
searchEditText.setFocusable(isFocused);
searchEditText.setFocusableInTouchMode(isFocused);
if (isFocused) {
searchEditText.requestFocus();
} else {
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(searchEditText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS );
}
}
在每个 EditText 的活动的 onCreate() 和 onPause() 中:
setEditTextFocus(myEditText, false);
对于每个 EditText 一个 OnTouchListener:
myEditText.setOnTouchListener(new EditText.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
setEditTextFocus(myEditText, true);
return false;
}
});
对于OnEditorActionListener 中的每个EditText:
myEditText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
.......
setEditTextFocus(myEditText, false);
return false;
}
});
对于layout xml 中的每个EditText:
android:imeOptions="actionDone"
android:inputType="numberDecimal|numberSigned" // Or something else
可能还有更多的代码优化可能。