关于PopupWindow中无法嵌套viewpager+Fragment的解决办法!
许多人在创建弹出窗口的时候都选择 用PopupWindow实现,但是如果弹出传窗口内包含Fragment的时候你会发现找不到对应的ID
错误原因大概是:因为FragmentAdapter传入的是Activity的FragmentManger,所以默认是在Activity的布局xml中寻找ViewPager的定义,但是实际上它是在弹出的View里定义的。
解决办法:
放弃使用PopupWindow使用DialogFragment,但是当我使用DialogFragment的时候我有踩到一坑,就是无法铺满全屏,遂百度之......
最后的解决办法是:
继承DialogFragment后在OnCreatView中写如下代码:
1.//去出标题 getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); 2.//放置位置 Window window = getDialog().getWindow(); window.setGravity(Gravity.TOP | Gravity.RIGHT); 3.//设置布局 View mFilterView = inflater.inflate(R.layout.panstamp_popupwindow, ((ViewGroup) window.findViewById(android.R.id.content)), false);//需要用android.R.id.content这个view window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//注意此处 window.setLayout(ScreenUtils.getScreenWidth(getActivity()) - 80, ScreenUtils.getScreenHeight(getActivity()));//这2行,和上面的一样,注意顺序就行;
之后就解决问题了!
