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

说明:

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

Android PopupWindow 弹框布局要显示在某个空间下面位置_第1张图片

代码:

使用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,基础开发,】)