EditText loses focus when keyboard appears; requires touching twice to edit
I had the same problem...I solved it by extending EditText.
I created an onClickListener and in this method I've got the following code:
public OnClickListener clickListener = new OnClickListener() {
@Override
public void onClick(View v) {
EditTextInput.this.setFocusable(true);
EditTextInput.this.setFocusableInTouchMode(true);
EditTextInput.this.requestFocus();
}
};
I then placed the following code in the onKeyPreIme callback. You'll have to extend EditText to get access to it.
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK & event.getAction() == KeyEvent.ACTION_UP) {
EditTextInput.clearFocus();
EditTextInput.this.setFocusable(false);
EditTextInput.this.setFocusableInTouchMode(false);
return false;
}
return super.dispatchKeyEvent(event);
}
I find I have to toggle the focusable flag in order to bring the keyboard up on the very first click. Hope this helps...works for me.
A solution is to post a delayed runnable that checks to see if the EditText view is still focused, and if it is not, focus it.
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(final View v, boolean hasFocus) {
if (hasFocus) {
// Request focus in a short time because the
// keyboard may steal it away.
v.postDelayed(new Runnable() {
@Override
public void run() {
if (!v.hasFocus()) {
v.requestFocus();
}
}
}, 200);
}
}
});
You could try something like :
editText.requestFocus();
You could also set this :
android:windowSoftInputMode="stateHidden"
in your manifest file