有的时候当我们使用popwindow时将当前的activity当做view传给其他fragment使用时会导致我们设置背景变暗效果失效,导致这个原因的问题是因为我们传view后当弹出popupwindw的时候已经不再当前的activity了,所以会显示无效
因此在设置的时候我们这样处理:
public void backgroundalpha(float bgalpha) { //mapp.getinstance().getmainactivity()就是你想要点击时要显示的主activity windowmanager.layoutparams lp = activityb.getinstance().getmainactivity().getwindow().getattributes(); lp.alpha = bgalpha; //0.0-1.0 activityb.getinstance().getmainactivity().getwindow().setattributes(lp); activityb.getinstance().getmainactivity().getwindow().addflags(windowmanager.layoutparams.flag_dim_behind); }
即activity a作为view在b中显示,那么a中的设置透明度时getwindow要从b取,也就是b.getwindow();
补充知识:android 的popupwindow的简单设置及空白区域颜色
我就废话不多说了,大家还是直接看代码吧~
//设置空白的背景色 windowmanager.layoutparams lp = getactivity().getwindow().getattributes(); lp.alpha = 0.3f; getactivity().getwindow().setattributes(lp); // 用于popupwindow的view view contentview = layoutinflater.from(getcontext()).inflate(r.layout.quote_info_pop, null, false); // 创建popupwindow对象,其中: // 第一个参数是用于popupwindow中的view,第二个参数是popupwindow的宽度, // 第三个参数是popupwindow的高度,第四个参数指定popupwindow能否获得焦点 popupwindow window = new popupwindow(contentview, getscreenwith() / 3 * 2, (int) getscreenheight() / 3 * 2, true); // 设置popupwindow的背景 window.setbackgrounddrawable(getresources().getdrawable(r.drawable.white_shap)); // 设置popupwindow是否能响应外部点击事件 window.setoutsidetouchable(true); // 设置popupwindow是否能响应点击事件 window.settouchable(true); // 显示popupwindow,其中: // 第一个参数是popupwindow的锚点,第二和第三个参数分别是popupwindow相对锚点的x、y偏移 listview = contentview.findviewbyid(r.id.list); quoteinfoadapter = new quoteinfoadapter(getactivity(), mlist); listview.setadapter(quoteinfoadapter); window.showasdropdown(v, getscreenwith() / 6, 0); // 或者也可以调用此方法显示popupwindow,其中: // 第一个参数是popupwindow的父view,第二个参数是popupwindow相对父view的位置, // 第三和第四个参数分别是popupwindow相对父view的x、y偏移 // window.showatlocation(parent, gravity, x, y); //添加pop窗口关闭事件 window.setondismisslistener(new popondismisslistener()); 还要加上监听,否则,pop消失时,透明度不会变回来 class popondismisslistener implements popupwindow.ondismisslistener { @override public void ondismiss() { // todo auto-generated method stub //log.v("list_notetypeactivity:", "我是关闭事件"); windowmanager.layoutparams lp = getactivity().getwindow().getattributes(); lp.alpha = 1f; //0.0-1.0 getactivity().getwindow().setattributes(lp); } }
以上这篇解决android popupwindow设置背景透明度无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论