-
-
Notifications
You must be signed in to change notification settings - Fork 5k
Open
Labels
Description
在WebView下拉刷新的时候,如果html中还有自己的下拉,那在SmartRefreshLayout中就会出现各种问题。我解决了这个问题,给大家分享一下解决方案。
首先自定义WebView,代码如下:
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.webkit.WebView;
public class MyWebView extends WebView {
public interface RefreshStateListener {
public void refreshState(boolean canRefresh);
}
private RefreshStateListener refreshStateListener;
public void setRefreshStateListener(RefreshStateListener refreshStateListener) {
this.refreshStateListener = refreshStateListener;
}
public MyWebView(Context context) {
super(context);
}
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public MyWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
if (refreshStateListener != null) {
refreshStateListener.refreshState(clampedY);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (refreshStateListener != null && event.getAction() == MotionEvent.ACTION_DOWN) {
refreshStateListener.refreshState(false);
}
return super.onTouchEvent(event);
}
}使用非常简单,只需要在你的WebView那里加上一句代码即可。
webView.setRefreshStateListener {
refreshLayout.setEnableRefresh(it)
}目前没有发现任何问题,可以尝试使用百度首页测试。
Reactions are currently unavailable