0

我创建了一个活动,在其中单击特定按钮时,将打开一个包含 WebView 的警报对话框

一切正常,除非 WebView 的 url 被加载。在加载 WebView 的内容时,会显示警报对话框的磁贴和按钮,看起来有点奇怪。

这是在为其中的 webview 加载网页时警报对话框的屏幕截图

加载 webview 内容时的警报对话框

成功加载 webview 的内容后,如下所示

加载 webview 内容后

我想要的是在加载 webview 的内容时,会显示一个进度条或显示一个固定的背景图像。如何做到这一点?

我用来创建此警报的方法是:

//method to zoom images

public void zoomImage(String imageUrl)
{
    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Zoomed Image");
    WebView wv = new WebView(this);
    wv.setBackgroundColor(Color.WHITE);
    wv.getSettings().setBuiltInZoomControls(true);
    wv.setInitialScale(400);
    wv.loadUrl(imageUrl);
    wv.setWebViewClient(new WebViewClient()
    {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
      view.loadUrl(url);
      return true;
    }
  });
alert.setView(wv);
alert.setNegativeButton("Close", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
}
});
alert.show();
}

提前致谢!

4

2 回答 2

2

您可以在警报对话框自定义布局中使用进度条,并使 OnPageFinishedMethod 中的可见性消失。

您可以像这样创建自定义警报对话框:

        LayoutInflater inflater = getLayoutInflater();
        View dialoglayout = inflater.inflate(R.layout.big_east, (ViewGroup) getCurrentFocus());
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(dialoglayout);

    builder.setTitle("Zoomed Image");

你应该重写两个方法,就像“shouldOverrideUrlLoading”一样。方法是“OnPageStart”和“OnPageFinished”。

在 OnPageStart 中显示对话框,在 OnPageFinish 中使进度条消失。希望能帮助到你。

于 2013-03-28T08:03:31.063 回答
0

您可以使用 a WebView.PictureListener(已弃用,但仍然有效。不确定是否有可用的替代方法):

wv.setPictureListener(new WebView.PictureListener() {
    @Override
    public void newPicture(WebView view, Picture arg1) {
        alert.show();
    }
}
于 2013-03-28T07:56:26.613 回答