76.android 简单的WebView两种加载失败后自定义布局显示,并且设置文本水平垂直居中。

导读:本篇文章讲解 76.android 简单的WebView两种加载失败后自定义布局显示,并且设置文本水平垂直居中。,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

76.android 简单的WebView两种加载失败后自定义布局显示,并且设置文本水平垂直居中。

 

76.android 简单的WebView两种加载失败后自定义布局显示,并且设置文本水平垂直居中。

//第一种 在Activity里: 

 mWeb.loadUrl("https://www.baidu.com/?tn=98010089_dg&ch=8");
            mWeb.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                    view.loadUrl("https://www.baidu.com/?tn=98010089_dg&ch=8");
                    return true;
                }

                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    super.onPageStarted(view, url, favicon);
                    //TODO 
                }

                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    //TODO 
                }

                @Override
                public void onReceivedError(WebView view, int errorCode,
                                            String description, String failingUrl) {
                    super.onReceivedError(view, errorCode, description, failingUrl);
                                              /*隐藏默认的404页面*/
                    view.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
                    /**加载自定义页面,在这里你可以弹出个加载失败的窗口布局*/
//-------------------------------------也可以像我一样写个显示隐藏的一行字
                    mWeb.setVisibility(View.GONE);
                    mPage_load_failed.setVisibility(View.VISIBLE);
                }
            });

 

//我的Activity布局:

 

<?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"
    >
    

    <WebView
        android:id="@+id/mWeb"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></WebView>

    <TextView
        android:id="@+id/mPage_load_failed"
        android:visibility="gone"
        android:gravity="center"
        android:textSize="20sp"
        android:text="页面加载失败"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

//不推荐使用第一种方式,那么来看第二种,并且设置居中: 

 //第二种,通过这种方式不用再写一个显示隐藏的布局,我只写了一个WebView布局就可以了,比较省事,并且设置居中:

 mWeb.loadUrl(mUrl);
            mWeb.setWebViewClient(new android.webkit.WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                    view.loadUrl(mUrl);
                    return true;
                }

                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    super.onPageStarted(view, url, favicon);
                    //TODO 
                }

                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    //TODO 
                }

                @Override
                public void onReceivedError(WebView view, int errorCode,
                                            String description, String failingUrl) {
                    super.onReceivedError(view, errorCode, description, failingUrl);
                                              /*隐藏默认的404页面,显示页面加载失败*/
//                    //水平居中,通过标签居中
//                    view.loadDataWithBaseURL(null, "<center>页面加载失败</center>", "text/html", "utf-8", null);
                    //水平与垂直居中的html
                    view.loadDataWithBaseURL(null, "<html><body><div><table width=100% height=100% ><tr><td><p style=text-align:center;>页面加载失败</p></td></tr></table></div></body></html>", "text/html", "utf-8", null);
                    /**加载自定义页面,隐藏WebView,显示加载失败*/
                }
            });

 

//然后顺便的你还可以写个WebView页面返回的时候,一层层的退出效果:

/*
* 方法名:onKeyDown(int keyCode, KeyEvent event)
* 功    能:WebView页面一层层退出。
* 参    数:int keyCode, KeyEvent event
* 返回值:boolean
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWeb.canGoBack()) {
        mWeb.goBack();
        if (mWeb.getUrl().toString().equals("data:text/html;charset=utf-8;base64,")) {
            mWeb.goBack();
        }
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

 

//—————————————————————–完———————————————————————

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118318.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!