我想在我的android应用程序的PopupWindow中添加Web视图。这仅适用于警报对话框。 这是我的代码:

 AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
            alert.setTitle("Google");
            WebView wv = new WebView(MainActivity.this);
            wv.loadUrl("http:\\www.google.com");
            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) {
                    dialog.dismiss();
                }
            });
            alert.show();
        }

但是我想用弹出窗口来做到这一点。

#1楼 票数:0

textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
            LayoutInflater inflater = MainActivity.this.getLayoutInflater();
            final View dialogView = inflater.inflate(R.layout.main, null);
            WebView wv = (WebView) dialogView.findViewById(R.id.web);
            wv.loadUrl("https://www.google.com");
            wv.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);

                    return true;
                }
            });

            dialogBuilder.setView(dialogView);
            Dialog markerPopUpDialog = dialogBuilder.create();
            markerPopUpDialog.show();
        }
    });

这是layout.main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
    android:id="@+id/web"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</WebView>

#2楼 票数:0

您也可以通过使用活动来做到这一点。 首先,您需要使用网络视图进行活动,并使用以下代码在Java文件中设置布局宽度和高度。

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int width = dm.widthPixels;
    int height = dm.heightPixels;

    getWindow().setLayout((int) (width*0.9),(int)(height*0.8));

并在Android清单文件中为此活动选择主题“ @ style / AppTheme.CustomThemeForWebViewPOPUp”,并在样式文件中输入此代码。

<style name="AppTheme.CustomThemeForWebViewPOPUp">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowCloseOnTouchOutside">true</item>
    <item name="android:windowBackground">@drawable/popup_activity_design</item>
    <item name="android:backgroundDimEnabled">true</item>
</style>

#3楼 票数:0

根据您的要求,应使用自定义视图自定义警报对话框。

制作一个xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true">
    </WebView>

    <ProgressBar
        android:id="@+id/prg"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_centerInParent="true" />

</RelativeLayout>

<Button
    android:id="@+id/button3"
    style="@android:style/Widget.Holo.Button.Borderless"
    android:layout_width="wrap_content"
    android:textColor="#000000"
    android:layout_height="wrap_content"
    android:layout_gravity="center|right"
    android:text="Close" />

</LinearLayout>

现在在Java文件中实现代码:

 final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
    alert.setTitle("Google");
    View view = getLayoutInflater().inflate(R.layout.file_name, null);
    alert.setView(view);

    WebView wv = (WebView) view.findViewById(R.id.webview);
    pb = (ProgressBar) view.findViewById(R.id.prg);
    Button btnClose = (Button) view.findViewById(R.id.button3);
    pb.setVisibility(View.VISIBLE);

    btnClose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            alertDialog.dismiss();
        }
    });
    wv.setWebViewClient(new MyWebViewClient());
    wv.loadUrl("http://www.google.com");

    alertDialog = alert.create();
    alertDialog.show();
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.copyFrom(alertDialog.getWindow().getAttributes());
    lp.width = WindowManager.LayoutParams.MATCH_PARENT;
    lp.height = WindowManager.LayoutParams.MATCH_PARENT;
    alertDialog.getWindow().setAttributes(lp);

还可以自定义WebViewClient

class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);

        if (pb.getVisibility() == View.GONE) {
            pb.setVisibility(View.VISIBLE);
        }

        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        System.out.println("on finish");
        if (pb.getVisibility() == View.VISIBLE) {
            pb.setVisibility(View.GONE);
        }
    }
}

注意:将 alertDialog对象声明为全局对象。

#4楼 票数:0

最后,我完成了。 如果有人需要这样做,这是我的代码。

            AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
            alert.setTitle("Terms and conditions");
            View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.layout_termsdialog,null);
            WebView wv = (WebView) view.findViewById(R.id.web);
            progressbarterms= (ProgressBar) view.findViewById(R.id.progressbarterms);
            wv.loadUrl("my url");
            WebSettings webSettings = wv.getSettings();
            webSettings.setJavaScriptEnabled(true);
            wv.setWebViewClient(new TermsClient());
            alert.setView(view);
            alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                }
            });
            alert.show();
        }
class TermsClient extends WebViewClient
{
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub
                    progressbarterms.setVisibility(View.VISIBLE);
        view.loadUrl(url);
        return true;

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);

                    progressbarterms.setVisibility(View.GONE);
    }
}

布局文件包含webview和progressbar。

  ask by Silvi Gupta translate from so

未解决问题?本站智能推荐:

3回复

android:在我的网页视图中打开弹出窗口

我的应用程序中有 webview,我希望它在单击 webview 中的链接时打开弹出窗口。 我添加了以下代码,但没有用:- 弹出窗口应该是这样的
1回复

Android Webview Simulator与PopupWindow中的设备

我试图在PopupWindow中包含WebView。 WebView将显示Wikipedia页面。 有趣的是,使用模拟器时,WebView可以按我的预期工作。 当我在测试设备(原始的ASUS Transformer)上使用该应用程序时,弹出窗口出现在屏幕上,而不是弹出窗口中显示的网页,
1回复

从 Android 的 webview 处理同时 window.open() 时出现问题

我一直在通过实现 WebChromeClient 来处理来自 Javascript 的 window.open() 请求 而且,MyChromeClient 看起来像: 对于任何新窗口,我都会显示一个包含 WebView 的对话框。 当新窗口一次打开一个时,代码工作得非常好。 我实现的 D
2回复

WebView阻止弹出窗口?

我正在使用WebView浏览pesopay.com,并且可以正常运行,除非按下提交按钮时。 使用谷歌浏览器之类的互联网浏览器会显示一个弹出窗口,确认您填写的信息。 但是在我的Android WebView当我按下“提交”按钮时没有任何反应。 我认为是因为未启用WebView来显示弹出窗口。
1回复

在PopupWindow中打开PopupWindow

我想开一家PopUpWindow在另一个PopUpWindow 。 我的MainActivity有一个ImageButtons 。 当我单击它时,将显示一个PopUpWindow 。 我将其用作应用程序中的一种子菜单。 在我的第一个PopupWindow是另一个ImageButton 。
2回复

如何在Android的PopupWindow中滚动

我有一个用LinearLayout填充的PopupWindow。 我像这样设置了我的弹出窗口: 但是,当设备方向切换为横向时,弹出窗口的底部被切断,我无法向下滚动。 参见屏幕截图: 此弹出窗口下面的布局确实是可滚动的。 那么如何使弹出窗口可滚动? 谢谢,伊戈尔
4回复

如何在Android上的PopupWindow中设置ListView的宽度?

我将ListView作为PopupWindow中的contentView进行了膨胀。 如果我没有设置宽度和高度,我看不到PopupWindow。 如果我这样设置: 布局设置为“fill_parent”。 为什么? ListView和ListView项的布局属性都设置为“wra
8回复

如何在Android中创建弹出窗口(PopupWindow)

要创建一个简单的工作 PopupWindow,我们需要执行以下操作: popup_example.xml: Java代码 我的要求是我需要一个 和一个 在我的popup_example.xml 。 如何在我的 Java 代码中处理这两个组件?