Android popwindow位于某控件底部

在这里插入图片描述
1:点击需要弹框按钮传控件id(popwindow显示在哪个view下方就传哪个id)

  case R.id.edit_dz:
                showPopupWindow(editDz);
                break;

2:显示弹框

 private void showPopupWindow(Activity activity, ImageView v) {
        View view = LayoutInflater.from(activity).inflate(R.layout.circle_popwindow, null);
        final PopupWindow popupWindow = new PopupWindow(view, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
        int popupWidth = view.getMeasuredWidth();
        int popupHeight = view.getMeasuredHeight();
        int[] location = new int[2];
        // 允许点击外部消失
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        popupWindow.setOutsideTouchable(true);
        popupWindow.setFocusable(true);
        // 获得位置
        v.getLocationOnScreen(location);
        //上
        popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, (location[0] + v.getWidth() / 2) - popupWidth / 2, location[1] - popupHeight);
        //下
        //popupWindow.showAsDropDown(v);
        //左
//        popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]-popupWindow.getWidth(), location[1]);
        //右
        // popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]+v.getWidth(), location[1]);
        //背景颜色1f是白色
        setBackgroundAlpha(activity, 0.7f);
        //内容显示操作
        view.findViewById(R.id.txt_article).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                popupWindow.dismiss();
                setBackgroundAlpha(activity, 1f);
            }
        });
        view.findViewById(R.id.txt_video).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                popupWindow.dismiss();
                setBackgroundAlpha(activity, 1f);
            }
        });
        //点击外部消失
        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
            @Override
            public void onDismiss() {
                popupWindow.dismiss();
                setBackgroundAlpha(activity, 1f);
            }
        });

  //设置屏幕背景透明效果
    public static void setBackgroundAlpha(Activity activity, float alpha) {
        WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
        lp.alpha = alpha;
        activity.getWindow().setAttributes(lp);
    }

猜你喜欢

转载自blog.csdn.net/weixin_43117800/article/details/107974163