単一の EditText フィールドのソフト入力キーボードをオーバーライドしようとしています。私は主に、この優れた例に従ってきました。XML を inputType="text" に設定し、onCreate 内で次のように設定します。
EditText amount = (EditText) findViewById(R.id.amount_edit_text);
final EditText amt = amount;
amount.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
showCustomKeyboard(v);
} else {
hideCustomKeyboard();
}
}
});
amount.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showCustomKeyboard(v);
}
});
amount.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
EditText edittext = (EditText) v;
int inType = edittext.getInputType();
edittext.setInputType(InputType.TYPE_NULL);
edittext.onTouchEvent(event);
edittext.setInputType(inType);
return true;
}
});
これはほとんどの場合機能します。EditText をクリックすると、カスタム キーボードが表示されますが、常にジャンプします。非常に高速ですが、キーボードが標準キーボードの上に積み重なって表示され、標準キーボードが折りたたまれてキーボードが残されます。そして時々、それは勝手に崩れず、ただ積み重なっていく…
このジャンプなしで標準キーボードを自分のキーボードでオーバーライドする方法はありますか?