最近做webview加載,遇到一個(gè)問題,自帶的webview錯(cuò)誤頁面太丑,需要自定義view提示用戶,試了網(wǎng)上很多方法,也沒穩(wěn)定實(shí)現(xiàn)替換,最后一個(gè)簡(jiǎn)單的方法實(shí)現(xiàn)了,特此記錄
首先,根據(jù)自己公司的ui需求編寫自己的錯(cuò)誤頁面布局: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="數(shù)據(jù)加載失敗"
android:textColor="#C1C1C1"
android:textSize="14sp"
></TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="請(qǐng)檢查您的手機(jī)是否斷網(wǎng)"
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里面設(shè)置webview隱藏,onPageFinished里面設(shè)置當(dāng)webview加載正常時(shí)候顯示:
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);
}
}
});
代碼很簡(jiǎn)單,但是網(wǎng)上有很多的方法,各種調(diào)試都不成功,目前這種方式是最簡(jiǎn)單也是最穩(wěn)定的