2017-04-05 25 views
0

我有FragmentWebView,我想隐藏某些div。它可以工作,但这些div不会立即隐藏,并且可以被看到 - 有时只有几分之一秒,有时甚至更长。我试着添加setVisibility(View.INVISIBLE)onPageFinished setVisibility(View.VISIBLE)。这有一点帮助,但divs仍然可见。如果我点击WebView中的链接,下一页会显示更长的div。WebView - 用getElementById隐藏div不会立即生效

下面是代码:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 

public class TestFragment extends Fragment { 

public WebView mWebView; 
ProgressBar progressBar; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View fragmentView =inflater.inflate(R.layout.fragment_main, container, false); 
    String url = "https://www.example.com"; 
    mWebView = (WebView) fragmentView.findViewById(R.id.webview); 
    mWebView.setVisibility(View.INVISIBLE); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.setWebViewClient(new WebViewClient() 
    { 
     @Override 
     public void onPageFinished(WebView rootView, String url) 
     { 
      mWebView.loadUrl("javascript:(function() { " + 
        "document.getElementById('page-header').remove(); " + 
        "document.getElementsByTagName('footer')[0].style.display=\"none\"; " + 
        "document.getElementsByTagName('ol')[0].style.display=\"none\"; " + 
        "})()"); 
      mWebView.setVisibility(View.VISIBLE); 
     } 
    }); 
    mWebView.loadUrl(url); 
    return fragmentView; 
} 
} 

我在做什么错?有一个更好的方法吗?

帮助将非常感激。请原谅,如果代码是混乱的,我只是一个初学者 - 谢谢!

回答

0

尝试在XML文件本身中将可见性设置为INVISIBLE,而不是将其设置为Java代码。这背后的原因是,你设置了视图的通货膨胀率,然后设置了可见性,因此,该视图将显示短时间的时间跨度。这适用于我,也应该为你工作。让我知道它是否有帮助!

+0

谢谢!我将'mWebView.setVisibility(View.INVISIBLE);'从Java文件中取出,并在'WebView'中的XML文件中添加了'android:visibility =“invisible”'。这没有帮助 - 是不是正确的地方? –