在对话框中使用Facebook登录的Webview闪烁问题

4
我想使用webview制作一个对话框,其中包含Facebook登录网站。
我尝试了PopupWindow - 单击文本字段后键盘不会显示。
同样的事情发生在AlertDialog上。最后我使用了纯Dialog类,它“工作”了,但是当我单击文本字段时,整个webview会闪烁并变成透明,除了文本字段外。
我附上了警报框和Facebook登录网站在文本字段焦点后的截图。

我尝试了设置硬件加速或不同的背景,但没有任何效果。 有没有其他方法在webview中显示Facebook登录弹出窗口?

谢谢任何帮助! 代码:
Dialog dialog = new Dialog(MyActivity.this);
                    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                    dialog.setContentView(R.layout.webview_popup);
                    dialog.setCanceledOnTouchOutside(true);


                    dialog.setCancelable(true);
                    WebView popupWebview = (WebView)dialog.findViewById(R.id.webViewFromPopup);

                    popupWebview.loadUrl(url);

                    dialog.show();

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"
    android:id="@+id/popupWindow"
    android:background="#000" 
    android:minHeight="600dp">

    <WebView
        android:id="@+id/webViewFromPopup"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layerType="software"
        android:layout_weight="0.8" 
        android:background="#FFFFFFFF"
        />

</LinearLayout>

图片描述 解决方案:


我正在以编程方式构建对话框 - 它在某种程度上解决了问题...
代码:

    /* webview popup */
    private Dialog webViewPopup;            

private void showWebViewPopup(final String url)
{
    Dialog dialog = new Dialog(MyActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.webview_popup);

    dialog.setCancelable(true);
    WebView popupWebview = new WebView(MyActivity.this);
    LayoutParams params = new LinearLayout.LayoutParams(
        LayoutParams.MATCH_PARENT,
        LayoutParams.WRAP_CONTENT, 0.99f);
    popupWebview.setLayoutParams(params);

    Button cancelButton = new Button(MyActivity.this);
    LayoutParams bParams = new LinearLayout.LayoutParams(
        LayoutParams.MATCH_PARENT,
        LayoutParams.WRAP_CONTENT, 0.01f);
    cancelButton.setLayoutParams(bParams);
    cancelButton.setText("Cancel");
    cancelButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                webViewPopup.dismiss();
            }
        });

    LinearLayout popupLayout = (LinearLayout) dialog.findViewById(R.id.popupWindow);
    popupLayout.addView(popupWebview);
    popupLayout.addView(cancelButton);
    dialog.show();

    popupWebview.loadUrl(url);
    webViewPopup = dialog;
}

XML: (webview_popup.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"
    android:id="@+id/popupWindow"
    android:minHeight="600dp"
    >

</LinearLayout>
1个回答

0

由于字段输入给您带来了麻烦,一个解决方法是在您自己的表单中捕获该数据,并在到达 Webview 时进行处理。

设置它,以便当用户选择 Webview 中的字段时,您的 edittext 视图和键盘弹出。


获取Facebook密码...?哥们,那不是最好的主意 - 我怎么能把它发送到Facebook网站呢?更别提这是非法的了吧。 - Piotr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接