网址加载后无法隐藏webview

时间:2015-09-02 05:41:30

标签: android webview

如果网址以特定字符串结尾,我将使用以下代码隐藏webview。

 webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        if (url.endsWith("index.asp")) {
             Toast.makeText(getActivity().getApplicationContext(),"Login successfull",Toast.LENGTH_LONG).show();
            webview.setVisibility(view.GONE);
        }
    }
 });

但如果网址以index.asp结尾,则网页视图仍然存在(例如" http://abc.def/index.asp")

4 个答案:

答案 0 :(得分:2)

而不是:

webview.setVisibility(view.GONE);

使用:

view.setVisibility(view.GONE);

答案 1 :(得分:0)

正如此处How to listen for a Webview finishing loading a URL in Android?所述,有时webview网址会重定向回调。这意味着onPageFinished()将调用several times(不止一次)。如果是这种情况,您应该检查重定向状态以及您在onPageFinished()方法中的网址回拨

boolean loadingFinished = true;
boolean redirect = false;

mWebView.setWebViewClient(new WebViewClient() {

   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
       if (!loadingFinished) {
          redirect = true;
       }

   loadingFinished = false;
   view.loadUrl(urlNewString);
   return true;
   }

   @Override
   public void onPageStarted(WebView view, String url, Bitmap facIcon) {
        loadingFinished = false;
        //SHOW LOADING IF IT ISNT ALREADY VISIBLE  
    }

   @Override
   public void onPageFinished(WebView view, String url) {
       if(!redirect){
          loadingFinished = true;
       }

       if(loadingFinished && !redirect){
         //HIDE LOADING IT HAS FINISHED
                 if (url.endsWith("index.asp")) {
                    webview.setVisibility(view.GONE);
                  }

       } else{
          redirect = false; 
       }

    }
});

希望它会有所帮助

答案 2 :(得分:0)

如果您不想在视图上绘制内容,请尝试使用其他库。 对于instane,jsoup library

答案 3 :(得分:0)

你可以通过清除动画检查你是否设置了任何因为我有同样的问题布局没有在setVisibility(View.Gone)上消失。试试这个

webview.clearAnimation(); 
它帮助了我。