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

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

作者: runner123 | 来源:发表于2018-03-02 14:06 被阅读0次

    最近做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);
                }
    
    
            }
        });
    

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

    相关文章

      网友评论

          本文标题:Android中替换WebView加载网页失败时的页面

          本文链接:https://www.haomeiwen.com/subject/eqxaxftx.html