解决popupwindow键盘监听事件问题
随便写一个popupwindow:
public class MyPopupWindow extends PopupWindow{
private View mRootLayout;
private OnKeyListener mOnKeyListener;
public MyPopupWindow(Context context){
LayoutInflater inflater = LayoutInflater.from(context);
mRootLayout = inflater.inflate(R.layout.mypopupwindow, null);//popupwindow的布局文件
setContentView(mRootLayout);
setWidth(LayoutParams.WRAP_CONTENT);
setHeight(LayoutParams.WRAP_CONTENT);
mOnKeyListener = new OnKeyListener() {
@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
Log.d("hzb", "MediaControlerPopupWindow --- OnKeyListener --- "+keyCode);
if(keyCode == KeyEvent.KEYCODE_BACK){
dismiss();
}
return true;
}
};
mRootLayout.setOnKeyListener(mOnKeyListener);
mRootLayout.setFocusable(true);
mRootLayout.setFocusableInTouchMode(true);
setFocusable(true);
}
}
在需要弹出popupwindow的activity中主要代码:
private MyPopupWindow myPopupWindow;
myPopupWindow = new MyPopupWindow(this);
myPopupWindow.showAtLocation(findViewById(R.id.main_layout), Gravity.CENTER, 0, 0);//在activity的layout中居中显示(最外层layout的ID:main_layout)
myPopupWindow.setFocusable(true);
要两遍的setFocusable(true)才行哦!而且popupwindow最外层layout要有focusable 和 focusableIntouchMode 属性