PopupWindow杂谈

本文探讨了如何在Android应用中正确使用PopupWindow实现元素居中显示,并解决了背景透明度的问题。通过设置PopupWindow的背景颜色为半透明,确保其在关闭时背景恢复原状。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果要将PopupWindow居中时,直接:

popupWindow.showAtLocation(findViewById(R.id.btnBack), Gravity.CENTER, 0, 0);//设置居中,经测试,第一个参数可以不是整个视图,只要是视图中的一个按钮都可以的了;

我试过在PopupWindow的view布局中用RelativeLayout将view设置layout_centerInParent="true",layout_height已经设置成wrap_content,但效果看到的layout_height高度还是match_parent,经过排查,就是layout_centerInParent="true"导致的,这不科学嘛!因为我已经在其它都用了layout_height="wrap_content",但高度还是占据整个屏幕,这个真心不懂。。。。


PopupWindow点击消失

1.设置背景

不需要颜色:popupWindow.setBackgroundDrawable(new BitmapDrawable());
自定义颜色:

// 实例化一个ColorDrawable颜色为半透明
ColorDrawable bg = new ColorDrawable(0xb0000000);
// 设置PopupWindow弹出窗体的背景
popupWindow.setBackgroundDrawable(bg);

2.popupWindow.setOutsideTouchable(true);


PopupWindow弹出后设置背景透明度

// 设置背景颜色变暗
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 0.3f;
getWindow().setAttributes(lp);

在消失的时候将透明度变回来

popupWindow.setOnDismissListener(new OnDismissListener() {
			@Override
			public void onDismiss() {
				// TODO Auto-generated method stub
				WindowManager.LayoutParams lp = getWindow().getAttributes();
				lp.alpha = 1f;
				getWindow().setAttributes(lp);
			}
		});




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值