2

사용자가 목록보기에서 아래로 스크롤하기 시작하면 relativelayout을 추가하려고합니다. 사용자가 맨 위로 스크롤하여 목록보기의 첫 번째 항목이 표시 될 때 relativelayout을 다시 표시하고 싶습니다.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

+0

감사를 당신이 down 숨기기 레이아웃을 스크롤하여 스크롤 때 top 후 눈에 보이는 레이아웃에 도달 할 때이 코드에서이 방법

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

을 시도하지만 코드가 작동하지 않는 것 같습니다. 절대로 onScrollStateChanged 함수를 사용하지 않습니다. – wawanopoulos

+0

@wawanopoulos 제 경우에 잘 작동하는지 확인하십시오. –

+0

좋아, 다시 확인해 보겠습니다. – wawanopoulos

관련 문제