我在屏幕上的NestedScrollView中有一个webview。此外,我在屏幕下方有recyclerview,当recyclerview项目关闭webview时,我向上滚动再次看到webview,此时webview的内容停止滚动。我如何修复它?
<androidx.core.widget.NestedScrollView
android:id="@+id/webScrollContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:visibility="@{playerType == PlayerViewType.WEB ? View.VISIBLE : View.GONE}"
tools:visibility="gone">
<WebView
android:id="@+id/previewWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:isScrollContainer="false"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layout_scrollFlags="scroll|exitUntilCollapsed" />
</androidx.core.widget.NestedScrollView>
@SuppressLint("SetJavaScriptEnabled", "JavascriptInterface")
private fun initWebView() {
web.let {
with(it.settings) {
javaScriptEnabled = true
userAgentString =
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.117 Safari/537.36"
domStorageEnabled = true
loadWithOverviewMode = true
useWideViewPort = true
mediaPlaybackRequiresUserGesture = true
allowFileAccess = true
cacheMode = WebSettings.LOAD_DEFAULT
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
it.setLayerType(View.LAYER_TYPE_HARDWARE, null)
}
it.webChromeClient = WebChromeProgressClient()
it.webViewClient = WebClient()
}
}
2条答案
按热度按时间7lrncoxx1#
在布局中:
sf6xfgos2#
问题是由
NestedScrollView
内部的WebView
引起的。RecyclerView
覆盖了WebView
,但最终WebView
不再滚动。创建一个
custom
NestedWebView Class
来实现一个NestedScrollingChild Interface
。它应该是override
onTouchEvent() Method
。修复
NestedScrollView
的android:nestedScrollingEnabled="true"
设置。这将允许WebView
在NestedScrollView
内滚动。我另外要做的是禁用硬件加速。尝试调用
it.setLayerType(View.LAYER_TYPE_SOFTWARE, nul)
,而不是it.setLayerType(View.LAYER_TYPE_HARDWARE, nul)
。设置
WebView
的NastedScrollingEnabled
属性false
。它将禁用滚动。在initWebView() fun
中添加以下内容:之前测试一下,因为它可能会影响你的表现。
最后一个解决方案是使用
custom WebView
来实现NestedScrollingChild interface
。.kt file
.XML layout
初始化并使用带有reg
WebView
的定制NestedWebView
示例。