防止软键盘在Android后退按钮上关闭
这个问题在这里已经有了答案:
创建一个自定义的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 ..... />
链接地址: http://www.djcxy.com/p/16599.html
上一篇: Prevent softkeyboard dismiss on the android back button press