0

나는 잠시 동안이 nestedscrollview에서 작업 중입니다. 그것은 하나의 자식 RelativeLayout을 포함합니다. 다음은 의사 코드입니다.스틱 TextView가 표시된 영역의 상단으로 스크롤되면 상단에 있습니다.

<NestedScrollView> 
    <RelativeLayout> 
     <TextView /> //text A 
     <CalendaerView /> 
     <TextView /> //id = date_string //shows a date string 
     <RecyclerView /> //list of events 
    <RelativeLayout> 
</NestedScrollView> 

아이디어는 아래쪽으로 스크롤을 수행 할 때 전체보기를 정상으로 이동해야하지만, 날짜 문자열 TextView는 표시 영역의 상부에 도달되면, 상기 스크롤의 최고 직진한다. 이 위쪽으로 스크롤 할 때, 난 nestedscrollview 위해 스크롤 리스너를 시도 nestedscrollview 외부의 다른 textview 생성하고 visibility 변경 CalendarView 텍스트 A.

참조 할 수 있어야한다.

<RelativeLayout> 
    <TextView /> //to mimic date string 
    <NestedScrollView> 
    <RelativeLayout> 
     <TextView /> //text A 
     <CalendaerView /> 
     <TextView /> //id = date_string //shows a date string 
     <RecyclerView /> //list of events 
    <RelativeLayout> 
    </NestedScrollView> 
</RelativeLayout> 

여기가 전망의 가시성을 변경 포함으로 경험이 매우 부드러운 아니라, 스크롤 리스너 논리 현실에서

public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
     if (isDone && scrollY < oldScrollY) { 
      //scroll up 
      int firstVisibleItem = ((LinearLayoutManager) mRecycler.getLayoutManager()) 
         .findFirstVisibleItemPosition(); 
       if(0 == firstVisibleItem) { 
        textA.setVisibility(View.VISIBLE); 
        calendarView.setVisibility(View.VISIBLE); 
        dateString.setVisibility(View.VISIBLE); 
        dateStringCopy.setVisibility(View.GONE); 
       } 
      } 

      if (scrollY > oldScrollY) { 
       //scroll down 
       int dateTop = dateString.getTop(); 
       //check if datestring reaches the top of screen 
       if(0 >= dateTop - scrollY) { 
        isDone = false; 
        textA.setVisibility(View.GONE); 
        calendarView.setVisibility(View.GONE); 
        dateString.setVisibility(View.GONE); 
        dateStringCopy.setVisibility(View.VISIBLE); 
        new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          isDone = true; 
         } 
        }, 50); 
       } 
      } 
     } 

입니다. 누구든지이 문제를 해결할 더 좋은 방법이 있습니까?

+1

희망 [이] (https://github.com/emilsjolander/StickyScrollViewItems) 당신이 찾고있는 무엇. – Sanoop

+0

제 3 자 라이브러리없이 작업하는 것을 이해하려고했습니다. 하지만 그래, 우리가 간다. 나는 그것을 유스 케이스로 수정할 것이다. 감사! – Renjith

답변