Android中替换WebView加载网页失败时的页面

2018-03-02  本文已影响0人  runner123

最近做webview加载,遇到一个问题,自带的webview错误页面太丑,需要自定义view提示用户,试了网上很多方法,也没稳定实现替换,最后一个简单的方法实现了,特此记录

首先,根据自己公司的ui需求编写自己的错误页面布局:h5_load_error_layout.xml

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/h5_load_error"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="数据加载失败"
        android:textColor="#C1C1C1"
        android:textSize="14sp"
        ></TextView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请检查您的手机是否断网"
        android:textColor="#C1C1C1"
        android:textSize="14sp"
        ></TextView>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:background="@mipmap/h5_reload_btn_bg"
        android:text="重新加载"
        android:textColor="@color/bule"
        />
</LinearLayout>

其次,通过include引入webview所在的layout页面

再次,onReceivedError里面设置webview隐藏,onPageFinished里面设置当webview加载正常时候显示:
webView.setWebViewClient(new MyWebClient(webView, getApplicationContext()) {

        @Override
        public void onReceivedError(WebView view, int errorCode,
                                    String description, String failingUrl) {

            super.onReceivedError(view, errorCode, description, failingUrl);
            view.setVisibility(View.GONE);
            mErrorView.setVisibility(View.VISIBLE);
            loadError = true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (loadError != true) {
                mErrorView.setVisibility(View.GONE);
                webView.setVisibility(View.VISIBLE);
            }


        }
    });

代码很简单,但是网上有很多的方法,各种调试都不成功,目前这种方式是最简单也是最稳定的

上一篇 下一篇

猜你喜欢

热点阅读