electrolobzik
01/16/2024, 1:23 PMelectrolobzik
01/16/2024, 1:24 PMelectrolobzik
01/16/2024, 1:24 PMelectrolobzik
01/16/2024, 1:25 PM@Composable
fun LegalDocumentScreen(
modifier: Modifier = Modifier,
documentUrl: String,
screenTitle: String,
onBackClicked: () -> Unit
) {
BaseTitledScreen(
modifier = modifier,
screenTitle = screenTitle,
showBackButton = true,
showExitButton = false,
onBackClicked = onBackClicked
) {
var isLoading by remember { mutableStateOf(true) }
Box(
modifier = Modifier
.fillMaxSize()
.windowInsetsPadding(WindowInsets.safeContent)
) {
WebViewWidget(
modifier = Modifier.fillMaxSize(),
url = "<https://www.jetbrains.com/>"
) {
isLoading = false
}
if (isLoading) {
Box(
modifier = Modifier
.fillMaxSize()
.background(Colors.ScreenBackgroundColor),
contentAlignment = Alignment.Center
) {
LoadingAnimation()
}
}
}
}
}
This is the source code of this screen. When I comment the WebView widget I don’t see any problems. It looks like the WebView has wrong position during loading.electrolobzik
01/16/2024, 1:26 PM@SuppressLint("SetJavaScriptEnabled")
@Composable
actual fun WebViewWidget(
modifier: Modifier,
url: String,
onScrolledToTheEnd: (() -> Unit)?,
onLoadingFinished: (() -> Unit)?,
) {
AndroidView(
modifier = modifier,
factory = { context ->
AppCompatWebView(context).apply {
settings.javaScriptEnabled = true
webViewClient = TagBeamWebViewClient(
onScrolledToTheEnd = onScrolledToTheEnd,
onLoadingFinished = onLoadingFinished
)
settings.loadWithOverviewMode = true
settings.useWideViewPort = true
settings.setSupportZoom(true)
setOnOverScrolledListener(object : AppCompatWebView.OnOverScrolledListener {
override fun onOverScrolled(scrollX: Int, scrollY: Int, clampedX: Boolean, clampedY: Boolean) {
if (clampedY && scrollY != 0) {
onScrolledToTheEnd?.invoke()
}
}
})
}
},
update = { webView ->
webView.loadUrl(url)
}
)
}
This is the WebViewWidget composableTimo Drick
01/16/2024, 1:28 PMelectrolobzik
01/16/2024, 1:29 PMJonas
01/16/2024, 1:30 PMsetBackgroundColor(Color.Transparent.toColorInt())
Timo Drick
01/16/2024, 1:30 PMJonas
01/16/2024, 1:30 PMelectrolobzik
01/16/2024, 1:32 PMJonas
01/16/2024, 1:32 PMWebView(context).apply {
electrolobzik
01/16/2024, 1:34 PMelectrolobzik
01/16/2024, 1:34 PMJonas
01/16/2024, 1:36 PMJoel Denke
01/16/2024, 1:38 PMelectrolobzik
01/16/2024, 1:38 PMelectrolobzik
01/16/2024, 1:39 PMJoel Denke
01/16/2024, 1:41 PMJoel Denke
01/16/2024, 1:42 PMJoel Denke
01/16/2024, 1:42 PMJoel Denke
01/16/2024, 1:43 PMChrimaeon
01/16/2024, 2:43 PMelectrolobzik
01/16/2024, 2:44 PMJoel Denke
01/16/2024, 2:45 PM