在我的Android应用程序中,我正在打开webview。我想隐藏正在加载的URL,因此默认的窗口进度条对我不起作用。
除了可以在webview上添加进度对话之外,还有什么方法。
我正在使用以下代码。
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
final Activity activity = this;
mWebView.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view, int progress) {
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle("My title");
}
});
mWebView.loadUrl(Url);
mWebView.setWebViewClient(new HelloWebViewClient());
}
catch(Exception e)
{
e.printStackTrace();
}
}
private class HelloWebViewClient extends WebViewClient {
ProgressDialog MyDialog=new ProgressDialog(context);
public boolean shouldOverrideUrlLoading(WebView view, String url) {
MyDialog.show();
view.loadUrl(url);
return true;
}
请分享您宝贵的建议。
提前致谢:)
答案 0 :(得分:29)
如果您通过“android:theme =”@ android:style / Theme.NoTitleBar“”从清单中隐藏应用程序标题,那么您将看不到此代码在标题中显示的进度条:
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
// Makes Progress bar Visible
getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
因此,您可以在onCreate()中使用这样的对话框显示进度条:
final Activity activity = this;
final ProgressDialog progressDialog = new ProgressDialog(activity);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setCancelable(false);
browser.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
progressDialog.show();
progressDialog.setProgress(0);
activity.setProgress(progress * 1000);
progressDialog.incrementProgressBy(progress);
if(progress == 100 && progressDialog.isShowing())
progressDialog.dismiss();
}
});
答案 1 :(得分:0)
由于 ...
DLine.Stroke.Thickness := 3;
DLine.Stroke.Gradient.Color := $FF0000FF; // Blue
DLine.Stroke.Gradient.Color1 := $FFFF7F50; // Coral
DLine.Stroke.Kind := TBrushKind.Gradient;
DLine.Stroke.Gradient.Style := TGradientStyle.Linear;
...
在API级别26(Oreo)中已弃用 ,我将展示如何使用 {{1} } with ProgressDialog
:
步骤1)使用WebView和ProgressBar创建FrameLayout,如下所示:
ProgressBar
步骤2)像这样在WebView
内添加以下代码:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fl"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="8dp"
android:visibility="gone" />
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</FrameLayout>