Android触发onReceivedHttpError时如何隐藏Compose WebView
问题:在Accompanist WebView检测到错误时隐藏视图
我在Android应用中使用了Compose的Accompanist WebView,相关代码如下:
val webViewClient = remember { object : AccompanistWebViewClient() { override fun onReceivedError(view: WebView?, request: WebResourceRequest?, error: WebResourceError?) { println( "xxooxx onReceivedError() called with: view = $view, request = $request, error = $error" ) } override fun onReceivedHttpError(view: WebView?, request: WebResourceRequest?, errorResponse: WebResourceResponse?) { println( "xxooxx onReceivedHttpError() called with: view = $view, request = $request, errorResponse = $errorResponse" ) } override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean { var shouldOverrideUrlLoading = false request?.let { if (request.isRedirect) { shouldOverrideUrlLoading = true context.startActivity(Intent(Intent.ACTION_VIEW, request.url)) } } return shouldOverrideUrlLoading } } } val webChromeClient = remember { AccompanistWebChromeClient() } Column( modifier = Modifier .wrapContentSize() .padding(top = 5.dp) ) { WebView( modifier = Modifier .height(60.dp) .fillMaxWidth(), state = webViewState, navigator = navigator, client = remember { webViewClient }, chromeClient = webChromeClient, onCreated = { webView -> with(webView) { settings.run { javaScriptEnabled = true domStorageEnabled = true javaScriptCanOpenWindowsAutomatically = true useWideViewPort = true loadWithOverviewMode = true setInitialScale(1) layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL scrollBarStyle = View.SCROLLBARS_INSIDE_INSET } setBackgroundColor(0) } } ) }
目前我的后端会返回服务器错误页面,请问是否可以在检测到错误时隐藏该WebView?如何在AccompanistWebViewClient中控制WebView的可见性?
解决方案
只需修改onReceivedHttpError方法,直接通过传入的view对象设置可见性为View.GONE即可:
override fun onReceivedHttpError(view: WebView?, request: WebResourceRequest?, errorResponse: WebResourceResponse?) { println( "xxooxx onReceivedHttpError() called with: view = $view, request = $request, errorResponse = $errorResponse" ) view?.visibility = View.GONE }
内容的提问来源于stack exchange,提问作者Hector
相关产品推荐
相关产品推荐

