fragment中弹出PopupWindow窗体,点击外界屏幕不消失问题解决
来源:互联网 发布:什么是淘宝黑搜 编辑:程序博客网 时间:2024/04/30 10:04
直接上代码
private void loadPopupWindow(){ Typeface iconfont = Typeface.createFromAsset(getActivity().getAssets(), "iconfont/iconfont.ttf"); Typeface iconfont1 = Typeface.createFromAsset(getActivity().getAssets(), "iconfont1/iconfont.ttf"); /* 每次加载这里会产生一堆临时对象,一个选择问题,是依靠GC回收临时对象还是尽量不依靠GC写永久对象? */ if(popupWindow == null){ View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_main, null); download = (LinearLayout) view.findViewById(R.id.capture); off = (LinearLayout) view.findViewById(R.id.cancel); capture = (TextView) view.findViewById(R.id.textView_download); capture.setTypeface(iconfont); cancel = (TextView) view.findViewById(R.id.textView_cancel); cancel.setTypeface(iconfont1); download.setOnClickListener(this); off.setOnClickListener(this); popupWindow = new PopupWindow(view); popupWindow.setWidth(360); popupWindow.setHeight(160); dismiss.setPopup(popupWindow); } int[] loc = new int[2]; tool.getLocationOnScreen(loc); popupWindow.showAtLocation(tool, Gravity.NO_GRAVITY, loc[0]-110, loc[1] - popupWindow.getHeight()); }
定位在碎片中某个view的上面显示,开始也是调用了setFocusable,setOutsideTouchable这两个方法,设为true可惜没用,猜测可能是碎片依附的活动失去了焦点。没办法,既然这样只能写一个屏幕点击事件(在主活动中),然后在写一个碎片的内部接口,主活动实现之,每次加载窗体的时候回调这个接口中的方法(为了把PopupWindow对象传给主活动)。
代码细节:
/* 接口作用:点击popupwindow窗口外部使其消失,由由主活动实现,创建popupwindow对象时回调 */ public interface PopupDismiss{ void setPopup(PopupWindow window); }
/*主活动里实现这个方法*/public void setPopup(PopupWindow window){ popupWindow = window; }
/*dismiss是接口对象*/dismiss = (PopupDismiss) getActivity();dismiss.setPopup(popupWindow);
/*屏幕的点击事件,重写活动的这个方法就可以了*/ public boolean onTouchEvent(MotionEvent event){ if(popupWindow != null && popupWindow.isShowing()){ popupWindow.dismiss(); } return super.onTouchEvent(event); }
这样才解决问题,=。=
0 0
- fragment中弹出PopupWindow窗体,点击外界屏幕不消失问题解决
- android中Fragment中弹不出popupwindow的问题处理
- Android中弹出PopupWindow让屏幕变暗
- android实现点击屏幕其他地方popupwindow消失
- android 实现点击屏幕其他地方popupwindow消失
- Dialog中弹出PopupWindow
- Dialog中弹出PopupWindow
- dialog点击屏幕不消失
- android_AlertDialog_点击屏幕不消失
- 关于popupWindow点击屏幕其他地方或返回键消失
- 设置Dialog点击屏幕不消失
- 设置Dialog点击屏幕不消失
- 点击PopupWindow外部消失
- popupWindow点击外面消失
- PopupWindow点击界外消失
- PopupWindow 点击其他地方消失
- sharepoint 中弹出模式窗体
- PopupWindow点击窗口外的地方不消失的问题
- LINUX下MYSQL的启动及相关配置
- 安装cassandra作为kairosdb的数据存储
- Android:屏幕旋转时,禁止Activity重新加载
- POJ 2236 Wireless Network(并查集)
- Caffe源码解读2--syncedmem.hpp
- fragment中弹出PopupWindow窗体,点击外界屏幕不消失问题解决
- numpy各函数简介之生成数组函数(Array creation routines)
- myeclipse下SSH整合环境搭建
- SVN和Git的比较
- 50. Pow(x, n)
- 安装mysql
- 观察者模式及Java实现例子
- Powershell check server patch status
- linux下mysql命令大全