Android PopupWindow 弹框布局要显示在某个空间下面位置
程序员文章站
2022-05-31 10:55:32
...
说明:
弹框布局要显示在某个空间下面需求。使用PopupWindow 弹框控件。
代码:
使用PopupWindow。
1、PopupWindow初始化
private PopupWindow popupWindow; //初始化搜索popup (可以启动初始化) private void initSearchPopupWindow() { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View contentview = inflater.inflate(R.layout.popup_search_varieties_select, null);//自己的弹框布局 final EditText et_search = (EditText) contentview.findViewById(R.id.et_search);//布局中的编辑框 TextView tv_search = (TextView) contentview.findViewById(R.id.tv_search);//布局中的搜索按钮 contentview.setFocusable(true); // 这个很重要 contentview.setFocusableInTouchMode(true); popupWindow = new PopupWindow(contentview, RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT); popupWindow.setFocusable(true); popupWindow.setOutsideTouchable(false); contentview.setOnKeyListener(new View.OnKeyListener() {//监听系统返回键 @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { popupWindow.dismiss(); return true; } return false; } }); }
2、点击某个空间,启用PopupWindow,制定其显示位置iv_search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.showAsDropDown(rl_header);//PopupWindow显示在rl_header空间下面 } });
其它说明:
显示PopupWindow:
和dialog对比,主要用在特殊的使用,比如:显示在某个空间下面!
showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正*Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移