2015-09-02 66 views
1

如果URL以特定字符串结尾,我使用以下代码来隐藏webview。URL加载后无法隐藏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); 
     } 
    } 
}); 

但仍web视图如果URL以的index.asp(例如 “http://abc.def/index.asp”)

+0

为什么你隐藏webview'onPageFinished'?检查url是否以该字符串结尾。如果没有打开webview,否则不显示它。 – hrskrs

+0

尝试通过LinearLayout或FragmentView打包webview。你读过这个http://stackoverflow.com/questions/7942219/show-hide-webview-issue? – Vyacheslav

+0

调试并测试您检查的条件是否令人满意。 –

回答

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; 
     } 

    } 
}); 

希望这将有助于

+0

我怎么能使用这个 - string url =“”,这个url是webview获取的,它是动态的。 – toadalskiii

+0

仍然无法正常工作。 – toadalskiii

+0

仍然无法正常工作。 ;( – toadalskiii

0

尝试使用其他图书馆,如果你不想画的内容在视图上。 适用于instane,jsoup library。的

2

代替:

webview.setVisibility(view.GONE); 

使用:

view.setVisibility(view.GONE); 
+0

不起作用,webview仍然显示。 – toadalskiii

+0

也许如果你发布更多的代码,我们可以帮助你,否则一个不好的解决方案可能是将'WebView'包装在'FrameView'中,并且如果它符合你的条件,则显示'frameview'另一个隐藏它'(Visibility.GONE)' – hrskrs

0

可以通过清除动画检查是否已设置的任何,因为我曾与布局不消失在setVisibility同样的问题(View.Gone) ..试试这个

webview.clearAnimation(); 

它帮了我。

+0

没有工作,webview仍然可见。 – toadalskiii