腾讯浏览服务TBS浏览本地文件

接入

腾讯浏览服务TBS支持本地打开多种文件格式,如doc、ppt、pdf等。
官网:https://x5.tencent.com/tbs/guide/sdkInit.html。
要吐槽的是官方的接入文档不是很清晰,论坛问题也基本没人回答......
好在网络上有不少人总结了接入流程和遇到的坑,可以参考。

小坑

接入之后还是遇到一个小坑,就是加载文档后右下角会有菜单,有“查找”、“最近文件”等。然而,点击菜单是没有任何效果的……需要触摸一下页面才会消失,而且没有提供隐藏的API。


不明来历的菜单.png

填坑

很明显,首先想到的解决方法有两个:

  1. 模拟触摸
  2. 找到对应的View,然后隐藏

这里采用了第二个方法。
打印一下就可以看到TbsReaderView的整个结构,要做的就是把设置一下菜单view的可见性。

View结构.png

另外有个要注意的地方,这个菜单view是在加载文档后才会加进页面的。所以需要在加载文档后再隐藏该菜单view。

具体就是在加载文档后,监听到菜单View加进来,马上隐藏。关键代码如下:

tbsReaderView.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
            @Override
            public void onChildViewAdded(View parent, View childView) {
                if (childView instanceof FrameLayout) {
                    final FrameLayout frameLayout = (FrameLayout) childView;
                    frameLayout.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
                        @Override
                        public void onChildViewAdded(View parent, View childView) {
                            if (childView.getClass().getSimpleName().equals("MenuView")) {
                                childView.setVisibility(View.GONE);
                                //移除监听
                                tbsReaderView.setOnHierarchyChangeListener(null);
                                frameLayout.setOnHierarchyChangeListener(null);
                            }
                        }

                        @Override
                        public void onChildViewRemoved(View view, View view1) {

                        }
                    });
                }
            }

            @Override
            public void onChildViewRemoved(View view, View view1) {

            }
        });

你可能感兴趣的:(腾讯浏览服务TBS浏览本地文件)