接入
腾讯浏览服务TBS支持本地打开多种文件格式,如doc、ppt、pdf等。
官网:https://x5.tencent.com/tbs/guide/sdkInit.html。
要吐槽的是官方的接入文档不是很清晰,论坛问题也基本没人回答......
好在网络上有不少人总结了接入流程和遇到的坑,可以参考。
小坑
接入之后还是遇到一个小坑,就是加载文档后右下角会有菜单,有“查找”、“最近文件”等。然而,点击菜单是没有任何效果的……需要触摸一下页面才会消失,而且没有提供隐藏的API。
不明来历的菜单.png
填坑
很明显,首先想到的解决方法有两个:
- 模拟触摸
- 找到对应的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) {
}
});