浅谈Android中PopupWindow的使用

Android中关于弹窗的实现主要两种形式:AlertDialogPopupWindow

两者的最主要区别就是显示的位置问题:AlertDialog在位置显示上是固定的。PopupWindow的位置能够在主屏幕上任意显示。

PopupWindow的使用分为两步:
1.创建PopupWindow对象,完成初始化设置。
其中setWidth、setHeight和setContentView三者必须实现,否则将不会显示任何视图。 setContentView则是为PopupWindow设置视图内容。

private void initPopupWindow(View popupView) {
        popupWindow=new PopupWindow(context);
        popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
        popupWindow.setContentView(popupView);
        popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));
        popupWindow.setOutsideTouchable(false);
        popupWindow.setFocusable(true);
        tvCancel=popupView.findViewById(R.id.tvCancel);
        tvSure=popupView.findViewById(R.id.tvSure);
        tvSure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyUtils.showToast(context,"do something!");
                popupWindow.dismiss();
            }
        });
        tvCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                popupWindow.dismiss();
            }
        });
    }

2.显示位置。

adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                switch (position){
                    case 0:
                        popupWindow.showAtLocation(parentView, Gravity.TOP,0,0);
                        break;
                    case 1:
                        popupWindow.showAtLocation(parentView, Gravity.LEFT|Gravity.BOTTOM,0,0);
                        break;
                    case 2:
                        popupWindow.showAtLocation(parentView, Gravity.CENTER|Gravity.RIGHT,0,0);
                        break;
                }
            }
        });

运行效果图如下:
这里写图片描述
GitHub地址:https://github.com/BingaChen/project_pool
微信公众号:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_37011894/article/details/82284049