我正在将一个WebView加载到LinearLayout,并希望在此布局中显示一个ProgressBar,直到WebView完全加载。我通过以下链接,它们看起来真的很棒,但我不想使用 ProgressDialog ,而不是我想在布局中使用进度条。
http://xjaphx.wordpress.com/2011/07/31/load-webview-with-progressdialog/
how to show progress bar on webview?
我该怎么做?
比如说,
if(pos==0)
{
mLayout.setVisibility(View.VISIBLE);
mWeb.loadUrl("http://android.stackexchange.com/");
}
在mLayout
内我想显示一个进度条,直到页面显示出来。
答案 0 :(得分:7)
在webview中定义进度条:
1。在您的布局中定义ProgressBar
和Webview
,如下所示:
<ProgressBar android:id="@+id/progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="8px"
android:max="100"
android:visibility="gone" />
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge="none" >
<WebView
android:id="@+id/webkit"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</ScrollView>
2。在您的活动中:
progressBar = (ProgressBar)findViewById(R.id.progressbar);
progressBar.setProgress(0);
progressBar.setVisibility(View.VISIBLE);
WebView mWebView = (WebView)findViewById(R.id.webkit);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
if(progress == 100) {
progressBar.setVisibility(View.GONE);
}
}
});
答案 1 :(得分:3)
您可以像这样简单地使用webView setPictureListener():
// here you can start a loading wheel
webView.setPictureListener(new WebView.PictureListener() {
public void onNewPicture(WebView webView, Picture picture) {
// close your loading wheel here
}
});
//load your url
webView.loadUrl(yourUrl);
答案 2 :(得分:0)
我确信这是检测页面加载完成的更好方法。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
loadingIndicator.setVisibility(View.GONE);
}
});