Android PopupWindow 弹框布局要显示在某个空间下面位置

来源:互联网 发布:织带软件 编辑:程序博客网 时间:2024/06/06 05:07

说明:

弹框布局要显示在某个空间下面需求。

代码:

使用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

  • showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移

  • showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移

  • showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

和dialog对比,主要用在特殊的使用,比如:显示在某个空间下面!
原创粉丝点击