解决Android popupWindow设置背景透明度无效的问题
程序员文章站
2022-03-30 18:45:49
有的时候当我们使用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设置背景透明度无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: 锤子手机预订量超5万台 真实可靠
推荐阅读
-
快速解决C# android base-64 字符数组的无效长度问题
-
解决Android webview设置cookie和cookie丢失的问题
-
Android闹钟启动时间设置无效问题的解决方法
-
android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法
-
Android ListView的item背景色设置和item点击无响应的解决方法
-
vue中设置height:100%无效的问题及解决方法
-
解决Android popupWindow设置背景透明度无效的问题
-
Android view更改背景资源与padding消失的问题解决办法
-
解决popupWindow 的android.view.WindowManager$BadTokenException问题
-
Android ScrollView内部组件设置android:layout_height="fill_parent"无效的解决办法