欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

解决Android popupWindow设置背景透明度无效的问题

程序员文章站 2022-07-24 15:02:54
有的时候当我们使用popwindow时将当前的activity当做view传给其他fragment使用时会导致我们设置背景变暗效果失效,导致这个原因的问题是因为我们传view后当弹出popupwind...

有的时候当我们使用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设置背景透明度无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。