WebView 和 ProgressBar 没有出现
WebView and ProgressBar not appearing
伙计们。我有一个问题,我正在创建一个应用程序,当 webview 被收费时,在内容之前出现一个 ProgressBar 加载,请参阅我的代码。问题是当您启动应用程序时,有一个白色的 activity 代替了没有显示 ProgressBar 的 webview。遵循代码。
<FrameLayout
android:id="@+id/framelayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:visibility="invisible"/>
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="invisible"/>
</FrameLayout>
</RelativeLayout>
现在我的CLASS:
// 代码 WebView
final WebView myWebView = (WebView) findViewById(R.id.webView);
myWebView.loadUrl("http://www.idestudos.com.br");
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
myWebView.setWebViewClient(new MyBrowser());
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
myWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
ProgressBar pb = (ProgressBar) findViewById(R.id.progress);
pb.setVisibility(View.VISIBLE);
}
public void onPageFinished(WebView view, String url){
ProgressBar pb = (ProgressBar) findViewById(R.id.progress);
pb.setVisibility(View.INVISIBLE);
myWebView.setVisibility(View.VISIBLE);
}
});
}`
您的根 FrameLayout
的高度设置为 0dp,即 android:layout_height="0dp"
,但权重设置为 1,android:layout_weight="1"
,您确定它在 [=14= 中吗? ]?如果不将高度更改为 android:layout_height="match_parent"
或其他内容。
此外,您将客户端设置了两次。
myWebView.setWebViewClient(new WebViewClient() {...});
代码中有两次。
改为这样做。
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
ProgressBar pb = (ProgressBar) findViewById(R.id.progress);
pb.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url){
ProgressBar pb = (ProgressBar) findViewById(R.id.progress);
pb.setVisibility(View.INVISIBLE);
myWebView.setVisibility(View.VISIBLE);
}
});
将进度条放在 FrameLayout 内,并将 FrameLayout 放在 WebView 下方,这样即使您在 WebView 中滚动,进度条也会留在您的屏幕上...
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="150dp">
<ProgressBar
<!-- your progress bar here-->
/>
</FrameLayout>
</RelativeLayout>
伙计们。我有一个问题,我正在创建一个应用程序,当 webview 被收费时,在内容之前出现一个 ProgressBar 加载,请参阅我的代码。问题是当您启动应用程序时,有一个白色的 activity 代替了没有显示 ProgressBar 的 webview。遵循代码。
<FrameLayout
android:id="@+id/framelayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:visibility="invisible"/>
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="invisible"/>
</FrameLayout>
</RelativeLayout>
现在我的CLASS: // 代码 WebView
final WebView myWebView = (WebView) findViewById(R.id.webView);
myWebView.loadUrl("http://www.idestudos.com.br");
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
myWebView.setWebViewClient(new MyBrowser());
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
myWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
ProgressBar pb = (ProgressBar) findViewById(R.id.progress);
pb.setVisibility(View.VISIBLE);
}
public void onPageFinished(WebView view, String url){
ProgressBar pb = (ProgressBar) findViewById(R.id.progress);
pb.setVisibility(View.INVISIBLE);
myWebView.setVisibility(View.VISIBLE);
}
});
}`
您的根 FrameLayout
的高度设置为 0dp,即 android:layout_height="0dp"
,但权重设置为 1,android:layout_weight="1"
,您确定它在 [=14= 中吗? ]?如果不将高度更改为 android:layout_height="match_parent"
或其他内容。
此外,您将客户端设置了两次。
myWebView.setWebViewClient(new WebViewClient() {...});
代码中有两次。
改为这样做。
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
ProgressBar pb = (ProgressBar) findViewById(R.id.progress);
pb.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url){
ProgressBar pb = (ProgressBar) findViewById(R.id.progress);
pb.setVisibility(View.INVISIBLE);
myWebView.setVisibility(View.VISIBLE);
}
});
将进度条放在 FrameLayout 内,并将 FrameLayout 放在 WebView 下方,这样即使您在 WebView 中滚动,进度条也会留在您的屏幕上...
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="150dp">
<ProgressBar
<!-- your progress bar here-->
/>
</FrameLayout>
</RelativeLayout>