在我的應用程序中,我加載了一個WebView,其中用戶輸入用戶名/密碼,並且我不希望webview在用戶不小心點擊web視圖外部時關閉使另一個網絡調用來加載這個webview。防止在webview之外單擊時關閉WebView
我知道這可以完成對話框(如:dialog.setCanceledOnTouchOutside(true);
),但無法找到類似的webview機制。
謝謝!
下面是代碼:
@SuppressLint("SetJavaScriptEnabled")
public class LoginDialogFragment extends DialogFragment {
private static final String TAG = LoginDialogFragment.class.getSimpleName();
View mainView = null;
WebView webView = null;
OnLoginSucceeded loginSucceeded = null;
ProgressBar progressBar = null;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mainView = inflater.inflate(R.layout.webview, container, false);
if (getDialog() != null)
getDialog().setTitle(getString(R.string.login));
webView = (WebView) mainView.findViewById(R.id.webview);
//display the progress bar
progressBar = (ProgressBar) mainView.findViewById(R.id.user_profile_loading_progress);
progressBar.setVisibility(View.VISIBLE);
//turn caching off
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginsEnabled(true);
webView.setWebChromeClient(new WebChromeClient() {
});
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i(TAG, "URL received in onCreateView's onPageStarted is: " + url);
new HandleRequest().execute(url);
}
@Override
public void onPageFinished(WebView view, String url) {
}
});
new FetchLoginFormTask().execute();
return mainView;
}
在哪個窗口小部件中打開webview?任何對話或任何..... .....請設置setCanceledOnTouchOutside(false)而不是true。你有沒有嘗試setCancelable(false)? –
@iDroidExplorer這個webview被顯示在一個View中,它本身就是DialogFragment的一部分,因此我不能使用你建議的方法。 –
我更新了我的文章w /我所指的代碼。 –