我想使用webview制作一个对话框,其中包含Facebook登录网站。
我尝试了PopupWindow - 单击文本字段后键盘不会显示。
同样的事情发生在AlertDialog上。最后我使用了纯Dialog类,它“工作”了,但是当我单击文本字段时,整个webview会闪烁并变成透明,除了文本字段外。
我附上了警报框和Facebook登录网站在文本字段焦点后的截图。
我尝试了设置硬件加速或不同的背景,但没有任何效果。 有没有其他方法在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>