好吧,如果我滚动了一点点并且 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);
取决于我想在哪里使用它们。有什么建议吗?
最佳答案
我有同样的问题,我成功地用 next 解决了它:
创建从 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;
}
}
Activity 中
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>
祝你好运!
关于java - 覆盖 swipetorrefresh 上的缩放 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35957542/