【发布时间】:2016-06-15 16:07:18
【问题描述】:
我有当前的布局(这里明显简化了):
<SwipeRefreshLayout>
<MapFragment/>
<ListView/>
</SwipeRefreshLayout>
为了解决向下滑动触发刷新的问题,我尝试了以下操作:
mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
mSwipeRefreshLayout.setEnabled(false);
}
});
然后在列表视图中重新启用:
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
mSwipeRefreshLayout.setEnabled(true);
}
// Prevents the downward swipe from triggering refresh unless the
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int topRowVerticalPosition = (listView == null || listView.getChildCount() == 0) ? 0 : listView.getChildAt(0).getTop();
mSwipeRefreshLayout.setEnabled((topRowVerticalPosition >= 0));
}
});
但是,由于某种原因,这仅在我在列表视图上滑动两次时才有效,这会破坏用户体验。
我不希望将地图片段移出 SwipeRefreshLayout 视图,因为这会将动画移出位置。
有人能指点我正确的方向吗?
【问题讨论】:
-
您是否尝试过使用
swipeRefreshLayout.setEnabled(false);禁用手势和进度动画?有关滑动刷新的更多信息,请查看:developer.android.com/training/swipe/add-swipe-interface.html
标签: android google-maps listview swipe swiperefreshlayout