Все решения, указанные выше ( InputMethodManager взаимодействие в OnFocusChangeListener.onFocusChange прослушиватель, подключенный к вашему EditText , работает нормально, если у вас есть одно редактирование в действии.
В моем случае у меня есть две правки.
private EditText tvX, tvY;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tvX.setOnFocusChangeListener(this);
tvY.setOnFocusChangeListener(this);
@Override
public void onFocusChange(View v, boolean hasFocus) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if(tvX.hasFocus() || tvY.hasFocus()) {
imm.showSoftInput(v, 0);
} else {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
};
Я заметил, что onFocusChange запускается для tvX с hasFocus = true (клавиатура показана), но затем для tvY с hasFocus = true (клавиатура скрыта). В конце концов, клавиатура не была видна.
Общее решение должно иметь правильное утверждение, если «показать клавиатуру, если текст EditText имеет фокус»