Home Article ViewFlipper无法切换页面视图

ViewFlipper无法切换页面视图

Release time:2018-08-21 10:43:15 Author:小键键 Reading volume:335

在开发浏览器的时候,使用ViewFlipper+crosswalk的策略进行浏览器的多页面切换。

前期切换正常,昨天突然出现“当切换页面,360手机仅出现第一个视图,华为手机仅出现最后一个视图的情况”

通过对ViewFlipper源码的分析(源码分析链接地址https://blog.csdn.net/ff20081528/article/details/18089883),以及对执行结果的分析,发现执行结果均正常,需要显示的子view的visitable=“visitable”,不需要显示的子view均为GONE。


通过多次试验发现,由于我的webview是重新封装的三核心FrameLayout,实际【ViewFlipper+crosswalk】策略表现的父子view关系为ViewFlipper→webview的view→crosswalk的view。

ViewFlipper隐藏webview的view时,crosswalk的view未隐藏,这一点很奇怪,应该是crosswalk内核自身的BUG。于是解决方案如下

1、添加一个方法


void showOnly(int childIndex) {

       final int count = mViewFlipper.getChildCount();

       for (int i = 0; i < count; i++) {

           if (mWebViews.get(i).getTag()==2){

               WebView.XWalkView xWalkView = mWebViews.get(i).getXWalkView();

//获取子view的子view进行隐藏,代码不一定一样,只要获取到子view的子view即可

               if (i == childIndex) {

                   xWalkView.setVisibility(View.VISIBLE);

               } else {

                   xWalkView.setVisibility(View.GONE);

               }

           }

      }

   }

2、在调用setDisplayedChild(selectePosition);之前调用showOnly(selectePosition);


  
I want to comment

Search

classification

Leave a message
http://blog.yujianweb.cn/index.php/
User login
You have not written any reviews yet!
You have commented!
Can only praise once!
You have a collection!