欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-31 10:55:32
...

说明:

弹框布局要显示在某个空间下面需求。使用PopupWindow 弹框控件。

Android 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

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

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

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

和dialog对比,主要用在特殊的使用,比如:显示在某个空间下面!
相关标签: android PopupWindow