欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ScrollView中嵌套原生控件+WebView+原生控件出现的WebView滑动顶部的冲突问题。

程序员文章站 2022-03-08 15:25:54
开发中常有一个界面中为了灵活动态可配,常常出现在一个界面中添加WebView来加载动态URL,界面如下所示(图中最外层为ScrollView,红色为原生控件,中间的绿色是一个WebView来动态加载URL的实现):这个时候会出现如下问题:1:如果采用Android原生的WebView来实现,因为原生WebView阉割了很多功能,就会出现各种兼容问题,如URL中有Video.js中的视频之类的就不能全屏播放,一些特定的需求也不能实现。2:这个时候我们解决方案是使用腾讯的X5WebView来...

开发中常有一个界面中为了灵活动态可配,常常出现在一个界面中添加WebView来加载动态URL,

界面如下所示(图中最外层为ScrollView,红色为原生控件,中间的绿色是一个WebView来动态加载URL的实现):

ScrollView中嵌套原生控件+WebView+原生控件出现的WebView滑动顶部的冲突问题。

这个时候会出现如下问题:

1:如果采用Android原生的WebView来实现,因为原生WebView阉割了很多功能,就会出现各种兼容问题,如URL中有Video.js中的视频之类的就不能全屏播放,一些特定的需求也不能实现。

2:这个时候我们解决方案是使用腾讯的X5WebView来实现加载URL,但是出现另外一个问题,如果界面中只有WebView一般不会出现什么问题,

但是当像上图中的需求的时候会出现一个很坑的问题,是滑动的时候触摸的瞬间WebView会滑动到顶部。

解决方案:直接在外层的ViewGroup中添加:

android:descendantFocusability="blocksDescendants"

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

        beforeDescendants:viewgroup会优先其子类控件而获取到焦点

        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

 

本文地址:https://blog.csdn.net/qq_42618969/article/details/109627933