好的,如果我只滚动一点点并且swipetorefresh可见,如果我尝试用两根手指进行缩放,它就会进一步向下刷新。我想要实现的是,如果用户尝试缩放,则刷新以刷新以被缩放选项覆盖。这是一些代码。
这是webView简单的缩放控件。
myWebView.getSettings().setLoadWithOverviewMode(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setDisplayZoomControls(false);
这是来自SwipeToRefresh:
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
myWebView.reload();
}
});
我有mySwipeRefreshLayout.setRefreshing(true);
和mySwipeRefreshLayout.setRefreshing(false);
取决于我想要使用它们的位置。有什么建议吗?
答案 0 :(得分:0)
我遇到了同样的问题,我用下一个成功解决了这个问题:
创建从SwipeRefreshLayout扩展的新类
public class SwipeToRefresh extends SwipeRefreshLayout {
private static final float REFRESH_RATE = 10f;
private float mDownX, mDownY, scaleX, scaleY;
public SwipeToRefresh(Context context) {
super(context);
}
public SwipeToRefresh(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mDownX = ev.getX();
mDownY = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
return doRefresh(ev);
case MotionEvent.ACTION_UP:
return doRefresh(ev);
}
return super.onInterceptTouchEvent(ev);
}
private boolean doRefresh(MotionEvent ev) {
scaleX = Math.abs(ev.getX() - mDownX);
scaleY = Math.abs(ev.getY() - mDownY);
if (scaleY / scaleX > REFRESH_RATE) {
return super.onInterceptTouchEvent(ev);
} else {
return false;
}
}
}
活动
SwipeToRefresh mSwipeRefreshLayout = (SwipeToRefresh) findViewById(R.id.my_refresh_layout);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
// Refresh WebView
}
});
不要忘记布局中的更改类名称
<com.example.package.SwipeToRefresh
android:id="@+id/my_refresh_layout"
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_alignParentStart="true" />
</com.example.package.SwipeToRefresh>
祝你好运!