如何在SwipeRefreshLayout中禁用触摸事件?

Val*_*nov 5 android android-layout

我用SwipeRefreshLayout谷歌.我有几个问题.

  1. 如何在激活时阻止触摸屏onRefresh()
  2. 更新期间如何在屏幕旋转中心而不是顶部进行?

    swipeLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_status_info);
    swipeLayout.setColorSchemeColors(Color.RED, Color.GREEN, Color.BLUE, Color.CYAN);
    swipeLayout.setOnRefreshListener(this);
    
    
    @Override
    public void onRefresh() {
        clearTable(holidayTable);
        clearTable(cityayTable);
        setData();
    }
    
    Run Code Online (Sandbox Code Playgroud)

Ale*_*min 1

  1. 如果您想阻止某些视图 ( blockedView) 在刷新期间获取触摸事件,您可以在 OnTouchListener 中使用该事件:

    @Override
    public void onRefresh() {
        clearTable(holidayTable);
        clearTable(cityayTable);
        setData();
        refreshing = true;
    }
    ...
    
    blockedView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            //consuming the touch
            if (refreshing) return true;
            //letting the touch propagate
            else return false;
        }
    });
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用此方法设置所需的offset像素:

    swipeLayout.setProgressViewOffset(true, 0, offset);
    
    Run Code Online (Sandbox Code Playgroud)