【发布时间】:2022-10-26 00:06:57
【问题描述】:
WebView 不在 Compose 内滚动。 我需要使用 Compose 将 WebView 放入 BottomSheet。即使我们使用例如 WebView 不滚动的问题NestedWebView,或NestedScrollWebView。 如果我将 WebView 放在 NestedScrollView 中,它仍然不会对滚动做出反应。
BottomSheetScaffold(
sheetContent = {
AndroidView(factory = {
NestedWebView(it).apply {
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
settings.domStorageEnabled = true
settings.javaScriptEnabled = true
settings.useWideViewPort = true
webViewClient = WebViewClient()
//loadUrl("https://contest.rippl.club/")
loadUrl("https://codeflarelimited.com")
}
})
}) {
}
一种解决方法是使用verticalScroll并将webview高度设置为WRAP_CONTENT:
val scrollState = rememberScrollState()
AndroidView(modifier = Modifier.verticalScroll(scrollState), factory = {
WebView(it).apply {
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
---//---
但是有很多网站不能与 wrap_content 一起使用,例如因为像这个网站https://contest.rippl.club/这样的内部滚动。该站点不适用于该解决方法。如果我们将 webview 高度设置为屏幕高度,它仍然不起作用,因为verticalScroll 是作为 ScrollView 工作的,所以它只会滚动到这个高度。
我也检查了这个文档https://developer.android.com/jetpack/compose/gestures#parent-compose-child-view,但对于 webview 案例没有任何作用。
【问题讨论】:
-
你找到解决方案了吗?它对我不起作用,这是我正在尝试的基本语法。 LazyColumn { items(size) { AndroidView { Webview { // 可滚动内容 } } } } 这里的 web 视图不滚动。如果我将它从惰性列中取出并只渲染一个,我可以滚动 Web 视图的内容。我想这也是你的问题。
标签: android webview android-jetpack-compose bottom-sheet