2012-09-26 72 views
3

我有麻煩讓這個進度欄正常工作。任何機構都可以幫助我解決問題,有沒有什麼遺漏?Webview中的進度條

web = (WebView) findViewById(R.id.webview01); 
     progressBar = (ProgressBar) findViewById(R.id.progressBar); 
     web.setWebViewClient(new myWebClient()); 

     //ADDING THIS RESOLVED THE PROGRESS BAR ACTUALLY LOADING. 
     web.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) { 
     progressBar.setProgress(progress); } 
     }); 
     //ADDING THIS RESOLVED THE PROGRESS BAR ACTUALLY LOADING. 

     WebSettings websettings = web.getSettings(); 
     websettings.setBuiltInZoomControls(true); 
     websettings.setUseWideViewPort(true); 
     websettings.setJavaScriptEnabled(true); 
     websettings.setAllowFileAccess(true); 
     websettings.setDomStorageEnabled(true); 
     websettings.setLoadWithOverviewMode(true); 
     websettings.setSavePassword(true); 
     web.loadUrl("http://www.google.com"); 

然後在代碼

//Loading the Actual Webpage 
public class myWebClient extends WebViewClient 
{ 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     // TODO Auto-generated method stub 
     super.onPageStarted(view, url, favicon); 
     progressBar.setVisibility(View.VISIBLE); 

    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     // TODO Auto-generated method stub 

     view.loadUrl(url); 
     progressBar.setVisibility(View.VISIBLE); 
     return true; 

    } 
    //web.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) { 
     progressBar.setProgress(progress); 

    } 




    @Override 
    public void onPageFinished(WebView view, String url) { 
     // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 

     progressBar.setVisibility(View.GONE); 
    } 

} 

web視圖本身以後的作品就好了,我只是想有一個水平加載條,類似像海豚,Chrome瀏覽器,等

這是佈局。

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/bgapp" 
android:fadingEdge="horizontal" 
android:gravity="center" 
android:orientation="vertical" > 

<include 
    android:id="@+id/inc_blue" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    layout="@layout/inc_enphase_bar_with_title_buttons" /> 

<ProgressBar 
    android:id="@+id/progressBar" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:minHeight="8dip" /> 

<WebView 
    android:id="@+id/webview01" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1.15" 
    android:fadingEdge="vertical" > 

</WebView> 

林沒有得到任何錯誤或antying所以沒有logcat的,它只是實際加載時,會顯示進度條網頁加載,但裝載的沒有動畫或實際運動時。

+0

put progressBar.setVisibility(View.VISIBLE); int inPageStarted callbasck – Blackbelt

回答

3

你也應該用

progressBar.setProgress(int); 

的進展情況進行顯示設置中間進度。所有你正在做的是顯示和隱藏視圖

編輯: 添加以下代碼。

@Override 
    public void onProgressChanged(WebView view, int progress) { 
    progressBar.setProgress(progress); 
    } 

對不起你需要這個webchromeclient。所以使用如下。把它放在下面

web.setWebViewClient(new myWebClient()); 
//add this below line 
web.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) { 
     progressBar.setProgress(progress); 
    } 
}); 

檢查WebView文件,它有一個例子。

+0

我在哪裏放置'progressBar.setProgress(int);'在我的myWebclient中,並且做任何你知道在webview中使用chromeclient的東西更好? –

+0

我不太確定chromeclient,從來沒有工作過。覆蓋WebViewClient類的onProgresschanged – nandeesh

+0

我已經用我認爲是你的建議更新了源代碼,你介意看看。隨時編輯代碼,如果我犯了一個錯誤。 –