前言:工作几年了,没有写博客记录的习惯,突然发现以前的一些问题,又再次犯下错误,实在烦恼,特在此开启此系列,以记录来自我提醒
一、问题:viewpager中有viewpager,切换过程中里面的viewpager页面第一次正常,第二次没有数据显示
解决:在第一个viewpager中的fragment中用TabLayout+viewpager布局,其中mVp.setAdapter(new
FragmentStatePagerAdapter(getFragmentManager(),mlists));//或者getSupportFragmentManager()
这个地方换成getChildFragmentManager()即可
原因:因为如果传参为getFragmentManager()则表示将父Fragment的FragmentManager传给了子Fragment,所以无法
显示数据
二、问题:使用PopupWindow作弹窗、内有viewpager+fragment时,运行时布局找不到对应ID
解决:说实话我没找到好的解决方法,所以之后就放弃使用PopupWindow,转而使用DialogFragment了
原因:是因为FragmentAdapter传入的是Activity的FragmentManger,所以默认是在Activity的布局xml中寻找
ViewPager的定义,但是实际上它是在弹出的View里定义的(ps:对于这个问题,如果谁有好的解决方法,可以在评论中留
言下,提前谢谢)
三、问题:mPopupWindow.showAsDropDown(控件view,0, 0);pop显示在控件正上方
解决:(1)设置PopupWindow的布局大小为 WRAP_CONTENT
(2)主动约束PopupWindow的内容大小,重写showAsDropDown方法
@Override
public void showAsDropDown(View anchor) {
if(Build.VERSION.SDK_INT >= 24){
Rect visibleFrame = new Rect();
anchor.getGlobalVisibleRect(visibleFrame);
int height = anchor.getResources().getDisplayMetrics().heightPixels - visibleFrame.bottom;
setHeight(height);
}
super.showAsDropDown(anchor);
}
原因: 发现在android7.0上,如果不主动约束PopupWindow的大小,比如,设置布局大小为 MATCH_PARENT,
那么PopupWindow会变得尽可能大,以至于 view下方无空间完全显示PopupWindow,而且view又无法向上滚动,
此时PopupWindow会主动上移位置,直到可以显示完全
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.youkuaiyun.com/myqITboy/article/details/79665046