我有一个WebView,当它加载一个站点时,会显示一个ProgressDialog。它在您第一次打开应用程序时工作正常,但是当您单击链接时它只是出现并且在您点击外部之前不会消失。它似乎也是用户点击的链接没有加载,但当我删除ProgressDialog的代码时,它工作正常。
提前致谢!
package *package URL*;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class TabFragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View mainView = (View) inflater.inflate(R.layout.fragment_tab_fragment1, container, false);
WebView webViewNews = (WebView) mainView.findViewById(R.id.webViewNews);
webViewNews.getSettings().setJavaScriptEnabled(true);
webViewNews.setVerticalScrollBarEnabled(false);
webViewNews.setHorizontalFadingEdgeEnabled(false);
final ProgressDialog pd=new ProgressDialog(getActivity());
webViewNews.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
pd.dismiss();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
pd.show();
return true;
}
});
// this is necessary for "alert()" to work
webViewNews.setWebChromeClient(new WebChromeClient());
// load a page to get things started
pd.show();
webViewNews.loadUrl("http://google.com");
return mainView;
}
}
答案 0 :(得分:0)
我用onPageStarted和onPageFinished替换了ShouldOverrideUrlLoadning。出于美观原因,我还决定使用Spinner更改ProgressDialog。以下是我如何做到的说明。
在布局中添加一个微调器(也是微调器的包装器,但不是必需的)。
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#cc111111"
android:id="@+id/pbWrapper">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:elevation="1000dp"/>
</RelativeLayout>
然后在你的onCreate
之前加上这个private ProgressBar mPbar = null;
private RelativeLayout mPbarWrap = null;
然后你需要找到微调器(和包装器)
mPbar = (ProgressBar) mainView.findViewById(R.id.progressBar);
mPbarWrap = (RelativeLayout) mainView.findViewById(R.id.pbWrapper);
然后根据WebView中是否有更改来显示和隐藏微调器(和包装器)
webViewNews.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView mainView, String url, Bitmap favicon) {
mPbar.setVisibility(View.VISIBLE);
mPbarWrap.setVisibility(View.VISIBLE);
}
public void onPageFinished(WebView view, String url) {
mPbar.setVisibility(View.GONE);
mPbarWrap.setVisibility(View.GONE);
}
});
希望这有帮助!