Ответ 1
создайте один пользовательский EditText, например, следуйте одному интерфейсу:
public class CustomEditText extends EditText {
public void setHandleDismissingKeyboard(
handleDismissingKeyboard handleDismissingKeyboard) {
this.handleDismissingKeyboard = handleDismissingKeyboard;
}
private handleDismissingKeyboard handleDismissingKeyboard;
public interface handleDismissingKeyboard {
public void dismissKeyboard();
}
@SuppressLint("NewApi")
public CustomEditText(Context context, AttributeSet attrs,
int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
// TODO Auto-generated constructor stub
}
public CustomEditText(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_UP) {
handleDismissingKeyboard.dismissKeyboard();
return true;
}
return super.dispatchKeyEvent(event);
}
то в вашей активности создайте инициализацию вашего CustomEditText и используйте:
customEditText.setHandleDismissingKeyboard(this);
затем реализуем метод класса и переопределения и помещаем ваш код в
для получения дополнительной информации о моем ответе все, что вам нужно, это onKeyPreIme
, вы можете переопределить это в своем классе EditText (как я отправляю для вас), чтобы обрабатывать все клавиши, такие как задний ключ или любую другую клавиатурную клавишу,
Я поместил один внутренний интерфейс в пользовательский класс, чтобы получить обратный вызов из этого класса для каждого вида деятельности или класса, который вы хотите, вы также можете сделать это со статическим методом, и поскольку вы хотите предотвратить отключение клавиатуры, вы можете просто вернуть true
в том, что.
для использования CustomEditText
вы можете использовать xml или в java, определить это и инициализировать это, как и другие виджеты (Button, TextView,...), и только разные вам нужно определить это в вашем xml, например:
<yourPackage.CustomEditText ..... />