zoukankan      html  css  js  c++  java
  • 如何实现自定义的android WebView错误页

    一般来说,可能第一时间想到的是自定义一个html来替代webview内置的异常页面。  但是实际操作时,这种方法比较困难。

    这里介绍一个简单的替代方案,希望能有所帮助。

    可以采用嵌套layout的方式,然后在webview的错WebViewClient的onReceivedError方法中控制异视图的显示和隐藏,具体代码如下:

     

    public class DefaultWebViewClient extends WebViewClient {
            boolean isInErrorState = false;
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
           //这里可以将异常信息也显示出来
                isInErrorState = true;
                mEmptyView.setVisibility(View.VISIBLE);
                webView.setVisibility(View.GONE);
                mEmptyViewIndicator.setImageResource(R.drawable.no_service);
                mEmptyView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        isInErrorState = false;
                        webView.reload();
                    }
                });
    //            super.onReceivedError(view, errorCode, description, failingUrl);
            }
    
    
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                if(!isInErrorState) {
                    mEmptyView.setVisibility(View.GONE);
                    webView.setVisibility(View.VISIBLE);
                }else {
                    mEmptyView.setVisibility(View.VISIBLE);
                    webView.setVisibility(View.GONE);
                }
                super.onPageStarted(view, url, favicon);
            }
        }

     

    对应的layout如下:

    <?xml version="1.0" encoding="utf-8"?>

     

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:orientation="vertical"

        android:layout_width="match_parent"

        android:layout_height="match_parent">

     

        <WebView

            android:id="@+id/webView"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:layout_gravity="center_horizontal" />

     

        <LinearLayout

            android:orientation="vertical" android:layout_width="match_parent"

            android:id="@+id/empty_view_root"

     

            android:layout_height="match_parent"

            android:gravity="center"

            android:paddingTop="50dp"

            android:paddingBottom="50dp">

     

            <ImageView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:id="@+id/empty_view_indicator"

                android:layout_gravity="center"

                android:src="@drawable/pic_nothing" />

     

            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:id="@+id/empty_view_text"

                android:textColor="#999999"

                android:singleLine="false" />

        </LinearLayout>

    </RelativeLayout>

  • 相关阅读:
    知识体系总结
    计算机基础总结
    Redis总结
    Mysql总结
    JAVA基础总结
    有锁编程
    CAS
    读写自旋锁
    org.apache.log4j.Logger详解
    web.xml 中的listener、 filter、servlet 加载顺序及其详解
  • 原文地址:https://www.cnblogs.com/lsjwzh/p/3788320.html
Copyright © 2011-2022 走看看