本人的使用场景:在输入法显示时候按返回键,如果存在PopupWindow则先隐藏PopupWidow。
达到这一目的分以下几个步骤:
一、自定义EditText:
public class InputMethodEditText extends EditText{
private PopuJar mPopup;//自定义的PopupWindow控件
public PopuJar getmPopup() {
return mPopup;
}
public void setmPopup(PopuJar mPopup) {
this.mPopup = mPopup;
}
public InputMethodEditText(Context context) {
super(context);
}
public InputMethodEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public InputMethodEditText(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK && mPopup != null && mPopup.isShow()){
//这里先于输入法之前截获返回键,并隐藏我的PopupWindow控件
mPopup.dismiss();
return true;
}
return super.dispatchKeyEventPreIme(event);
}
}
二、主控代码:messageInput = (InputMethodEditText) findViewById(R.id.chat_content);
messageInput.setmPopup(mPopu);
//下面代码将输入法与当前的自定义EditText绑定,
mImm = (InputMethodManager)
messageInput.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
经过以上两步操作就可以实现在输入法之前截获Android back键,小记备用。