2014-06-24 183 views
2

當用戶開始在列表視圖中向下滾動時,我嘗試添加一個相關佈局。 當用戶滾動到頂部並顯示列表視圖的第一項時,我想再次顯示相關佈局。Android:在列表視圖中向下滾動時隱藏relativelayout

我的代碼有效,但用戶嘗試滾動時會出現一些「爬升」現象。 我認爲問題位於listAtTop函數,但我不知道在哪裏。

enter image description here

list.setOnDetectScrollListener(new OnDetectScrollListener() { 
       @Override 
       public void onUpScrolling() { 
        /* do something */ 
        Log.d("INFO", "UPPPPPPPPPPP"); 
        if (listIsAtTop()) { 
         RelativeLayout relative1 = (RelativeLayout) findViewById(R.id.relative1); 
         relative1.setVisibility(View.VISIBLE); 
        } 
       } 

       @Override 
       public void onDownScrolling() { 
        /* do something */ 
        Log.d("INFO", "DOWNNNNNNNN"); 
        if (!listIsAtTop()) { 
         RelativeLayout relative1 = (RelativeLayout) findViewById(R.id.relative1); 
         relative1.setVisibility(View.GONE); 
        } 

       } 
      }); 


private boolean listIsAtTop() { 
     if (list.getChildCount() == 0) { 
      return true; 
     } 
     return list.getFirstVisiblePosition() == 0 && (list.getChildCount() == 0 || list.getChildAt(0).getTop() == 0); 
    } 

回答

2

嘗試這種方式

list.setOnScrollListener(new OnScrollListener() { 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
      } 
     int mPosition=0; 
     int mOffset=0; 

     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 
      // TODO Auto-generated method stub 
      int position = list.getFirstVisiblePosition(); 
       View v = list.getChildAt(0); 
       int offset = (v == null) ? 0 : v.getTop(); 

       if (mPosition < position || (mPosition == position && mOffset < offset)){ 
        // Scrolled up 
        //search_layout.setVisibility(View.GONE); 

       } else { 
        // Scrolled down 
        //search_layout.setVisibility(View.VISIBLE); 

       } 
     } 
    }); 

在這段代碼中滾動時down隱藏佈局,當你滾動起來,達到top然後可見佈局

+0

謝謝,但你代碼似乎不起作用。我永遠不會去onScrollStateChanged函數.. – wawanopoulos

+0

@wawanopoulos仔細檢查,因爲它在我的情況下工作正常。 –

+0

好的,我會再次檢查 – wawanopoulos

相關問題