Add a Progress Bar in WebView

前端 未结 8 1851
無奈伤痛
無奈伤痛 2020-11-27 15:50

I am trying to add a progress/loading bar to my application that uses WebView. I am confused on how to implement a progress bar that appears every time a link i

8条回答
  •  心在旅途
    2020-11-27 16:28

    I try dismis progress on method onPageFinished(), but not good too much, it has time delay to render webview.

    try with onPageCommitVisible() better:

    val progressBar = ProgressDialog(context)
        progressBar.setCancelable(false)
        progressBar.show()
        val url = "your url here"
        web_container.settings.javaScriptEnabled = true
        web_container.loadUrl(url)
    
        web_container.webViewClient = object : WebViewClient() {
            override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
                view.loadUrl(url)
                progressBar.show()
                return true
            }
    
            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
            }
            override fun onPageCommitVisible(view: WebView?, url: String?) {
                super.onPageCommitVisible(view, url)
                progressBar.dismiss()
            }
        }
        web_container.setOnKeyListener(View.OnKeyListener { _, keyCode, event ->
            if (keyCode == KEYCODE_BACK && event.action == MotionEvent.ACTION_UP
                    && web_container.canGoBack()) {
                web_container.goBack()
                return@OnKeyListener true
            }
            return@OnKeyListener false
        })
    

提交回复
热议问题