Android WebView 文明踩坑之路

盛年不重来,一日难再晨,及时当勉励,岁月不待人。这篇文章主要讲述Android WebView 文明踩坑之路相关的知识,希望能为你提供帮助。
情景一webview 以头布局的形式添加到 RecyclerView 中,第一次进入页面,当页面中有 EditText 并且点击时,甚至是类似点赞更换图片、点击 WebView任意区域,都会造成 WebView 自动滑动到最顶部;

分析:我的 WebView 在 onPageFinish() 的时候进行重新测量了高度,所以点击事件等很可能是 WebView 获取焦点重新绘制了,故而想到不让WebView获取焦点,尝试过使用
android:focusable="true" android:focusableInTouchMode="true

上述代码只能解决 WebView 区域以外的点击造成的WebView滑动至顶部问题,第一次进入 WebView 时点击依然会造成 WebView 滚动;最后想到了 code android:descendantFocusability="blocksDescendants",貌似完美解决
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:descendantFocusability="blocksDescendants"> < android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent"/> < /LinearLayout>

descendantFocusability 属性说明:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点 blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

情景二Android 5.0 + 部分手机上 WebView 加载 GIF图时 会造成 WebView 不停的闪烁
【Android WebView 文明踩坑之路】解决方法查看我的另一篇文章:WebView 5.0+闪烁以及白屏问题完美解决

    推荐阅读