3

ウェブビューの上にプログレスバーを追加しました。リンクをクリックするたびに、プログレスバーが表示されるようにしました。

プログレスバーのオーバーレイを Web ビューに表示したいのですが、プログレス バーのパーセンテージを表示したいと考えています。cssはわかるけど、androidでプログレスバーの位置を変える方法がわかりません

<?xml version="1.0" encoding="utf-8"?>
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/> 

MainActivity.java

public class MainActivity extends Activity {

WebView web;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    web = (WebView) findViewById(R.id.webview01);
 // request the progress-bar feature for the activity
    getWindow().requestFeature(Window.FEATURE_PROGRESS);

    // set a webChromeClient to track progress    
    web.setWebChromeClient(new WebChromeClient()
    {
        public void onProgressChanged(WebView view, int progress)
        {
            // update the progressBar
            MainActivity.this.setProgress(progress * 100);
        }
    });


    web.getSettings().setJavaScriptEnabled(true);
    web.loadUrl("url");

}

// To handle "Back" key press event for WebView to go back to previous screen.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
        web.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

プログレスバーのパーセンテージを表示するには、このコードを変更する必要がありますか? または、このコードから機能を拡張できますか?

4

1 に答える 1

7

「ページ読み込み」進行状況バーを表示するには、次を使用します。

onCreate() で:

// request the progress-bar feature for the activity
getWindow().requestFeature(Window.FEATURE_PROGRESS);

// set a webChromeClient to track progress    
myWebView.setWebChromeClient(new WebChromeClient()
{
 public void onProgressChanged(WebView view, int progress)
 {
   // update the progressBar
   MyActivity.this.setProgress(progress * 100);
 }
});

これは、ビルトイン ブラウザと同様に、ビルトイン スタイルを使用して画面上部に表示されます。

代わりに、独自の ProgressBar を表示して更新する場合、プロセスは同様で、進行状況バーへのハンドルを取得します。

ProgressBar myProgress = (ProgressBar)findViewById(R.id.progressBar1);

. . . onProgressChanged() 関数では、これを使用します。

myProgress.setProgress(progress * 100);

MyActivity.this.setProgress() の代わりに。

さらに、ProgressBar を WebView の前に表示する場合は、LinearLayout を使用できません。centerInParent="true" で RelativeLayout を使用し、レイアウトの WebView の後に ProgressBar をリストします。

于 2013-11-05T16:53:05.897 に答える