WebView缩放后左边内容被遮盖的问题
来源:互联网 发布:投影机融合软件 编辑:程序博客网 时间:2024/05/24 06:01
效果图如下
该效果图是使用了谷歌最新的CoordinatorLayout 嵌套了富文本控件RichEditor(也是webView),效果还是可以的,可以看到,在WebView放大时,左边内容一直是在原点处放大,而且滑动很流畅,我之前用的还是ScrollView + RichEditor的方式,暂时还没有改用谷歌的新控件CoordinatorLayout 来替换ScrollView.
问题分析
webView在放大时 左边会超过屏幕外,毕竟webView是一个可滚动的控件,有横向的滚动条,放大时,横向滚动条出现,这个时候滚动条随着手势向右滚动,左边的内容就看不到了,因此改变改滚动条的起始X轴上的位置即可!
解决方案
根据上述分析,查看WebView源码中的实现,然而对于WebView.scroll大家最先想到的就是webView.ScrollTo(int x,int y);这个方法,但是这个函数是两个参数,Y方向上的位置不太好确定,根据分析,Y方向是手势触摸的局部点,是局部的放大,没有必要改变这个值,因此,只需要改变X,让其滚动到X轴的原点即可,查看源码后,发现了这个方法:
/** * Set the horizontal scrolled position of your view. This will cause a call to * {@link #onScrollChanged(int, int, int, int)} and the view will be * invalidated. * @param value the x position to scroll to */ public void setScrollX(int value) { scrollTo(value, mScrollY); }
setScrollX(0)就可以了,设置值后,还是触发了这个ScrollTo的方法,不过咱们不用传Y值过去了,很强势!
setScrollX(0) 触发位置
很明显,WebView在放大缩小时肯定要触发OnTouch事件,因此可以重写OnTouchListener或者在webView的onTouchEvent中做点事情,代码如下:
webView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { webView.setScrollX(0); return false; } });
我用的是TouchListener方法,还可以在OnTouchEvent里面设置,其效果是一样的,不用管它是down事件还是move事件,放大缩小直接setScrollX(0)即可!
阅读全文
1 0
- WebView缩放后左边内容被遮盖的问题
- ionnic 解决头部遮盖主题内容的问题
- 2010reys.com遇到的问题 reader关闭问题 刷新页面有的内容被遮盖 ckeditor获取根目录问题
- softback的页面所有内容都挤到左边去的问题
- webview的缩放+zoomcontrols
- WebView的缩放功能
- 要素先闪烁后缩放的问题
- easyui缩放后的拖拽问题
- 地图缩放后Marker偏移的问题
- webView自适应实际内容高度的问题
- Android webview 加载html 页面缩放的问题
- android4.4以上 webview加在图片的缩放问题
- ActionBar的Overlay模式如何不遮盖顶部内容的问题
- webview混合内容问题
- 解决RecyclerView实现聊天界面,但点击下面的EditText后弹出的输入法会遮盖RecyclerView内容的方法
- 解决div层被select下拉框遮盖的问题
- 一个层被另外一个层遮盖的问题
- 处理输入框被键盘遮盖的问题
- ReactNative-ListView
- 语音传输 音频采集
- 实战:战狼2票房数据分析——(3)数据读取及分析
- HDU.2795 Billboard
- Common Subsequence (dp)
- WebView缩放后左边内容被遮盖的问题
- 互斥量和条件变量解决读者-写者问题
- mcp2515带spi的can驱动移植总结
- 1013. 数素数 (20)
- java之dbcp笔记
- Android 应用的启动过程
- 警察智力训练--蓝桥杯历年java真题(java递归实现eval算法)
- UVA 1605 Building for UN
- 提升方法之AdaBoost、提升树(GBDT)