最近做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);
}
}
});
代码很简单,但是网上有很多的方法,各种调试都不成功,目前这种方式是最简单也是最稳定的