2014-12-17 48 views
5

Google tarafından SwipeRefreshLayout kullanıyorum. ve birkaç sorum var. o onRefresh() aktifkenDokunma olayları SwipeRefreshLayout'ta nasıl devre dışı bırakılır?

  1. nasıl zaman dokunmatik ekran için engellemek için?
  2. Güncelleştirme sırasında ekranın üst kısmındaki eğirme merkezinde nasıl ilerleme kaydedilmelidir?

    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(); 
    } 
    

cevap

1
  1. Eğer yenileme sırasında dokunmatik olay alma bazı görünümü (blockedView) engellemek istiyorsanız OnTouchListener o olayı tüketebilir:

    @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; 
        } 
    }); 
    
  2. set Bu metodu kullanarak istenen offset pikselleri:

    swipeLayout.setProgressViewOffset(true, 0, offset); 
    
İlgili konular