Android中关于弹窗的实现主要两种形式:AlertDialog和PopupWindow。
两者的最主要区别就是显示的位置问题: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
微信公众号:
这里写图片描述