【问题标题】:Progress bar inside alert dialog containing webview包含 webview 的警报对话框内的进度条
【发布时间】:2013-03-28 07:51:03
【问题描述】:

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

一切正常,除非 WebView 的 url 正在加载。在加载 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();
}

提前致谢!

【问题讨论】:

    标签: java android webview progress-bar android-alertdialog


    【解决方案1】:

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

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

            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 中使进度条消失。 希望对您有所帮助。

    【讨论】:

    • 如果您不介意,对我的代码进行一点编辑编辑将有助于我更好地理解............ ..
    • 看不懂实现
    【解决方案2】:

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

    wv.setPictureListener(new WebView.PictureListener() {
        @Override
        public void newPicture(WebView view, Picture arg1) {
            alert.show();
        }
    }
    

    【讨论】:

    • 如果您不介意,您能告诉我在代码中的何处添加它以及如何设置特定图像或背景颜色吗?
    • @kittu88 把它放在loadUrl() 之前,你可以把alert.show() 从最后去掉。您所说的特定图像或背景颜色是什么意思?
    • 这意味着,只要内容被加载,就在 webview 的内容位置显示纯色
    • @kittu88 您可以将您的 WebView 包装在一个视图容器中,例如 LinearLayout,该容器具有最小高度和背景色。
    猜你喜欢
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    相关资源
    最近更新 更多