private void showPopUp(View v) {
LinearLayout layout = new LinearLayout(this);
layout.setBackgroundColor(Color.WHITE);
TextView tv = new TextView(this);
tv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 200));
tv.setText("xxxxx");
tv.setTextColor(Color.RED);
layout.addView(tv);
//通过改变当前activity的window属性来控制
WindowManager.LayoutParams lp = getWindow()
.getAttributes();
lp.alpha = 0.4f;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
PopupWindow popupWindow = new PopupWindow(layout, 120, 120);
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
int[] location = new int[2];
v.getLocationOnScreen(location);
popupWindow.setBackgroundDrawable(null);
popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0], location[1] + popupWindow.getHeight() + 20);
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
//此时记得也调用一下哦
WindowManager.LayoutParams lp = getWindow()
.getAttributes();
lp.alpha = 1f;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
}
});
popupWindow.update();
}
PopupWindow指定显示位置以及背景透明的全套解决方案
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 关于PopupWindow的使用,网上各种介绍,不胜枚举。我这里记录一下自己写的一个小demo(备忘),背景是半透...