나는 최근 안드로이드의 상태 표시 줄과 비슷한 레이아웃을 만들고 있습니다.스크롤하여 축소 툴바없이보기
나는 용기 내부에 두 개의 Views
있습니다. ViewPager
및 RecyclerView
. 기본 동작은 RecyclerView
을 스크롤 할 때 ViewPager
의 크기를 줄이고 그 반대의 경우도 마찬가지입니다.
논리 :
viewPagerMaxHeight = 200;
if scrollTop
is ViewPager.height > viewPagerMaxHeight?
YES: Prevent Scroll and Decrease ViewPager size apropriatry
No: Scroll RecyclerView
if scrollBottom
did we scroll to position 0?
YES: Start increasing ViewPager size
No: Scroll RecyclerView
몇 가지 참고 사항 : - RecyclerView
다양한 크기의 항목이 포함되어 있습니다. - 때로는 항목이 제거되고 추가됩니다. - 간단한 RecyclerView이지 서로 붕괴되는 알림에있는 이 아닙니다.
나는 논리의 대부분을 스스로 만들 수 있지만 RecyclerView
에 적합한 청취자를 만들 수 없어 방향과 양이 스크롤됩니다. 스크롤에서 RecyclerView
을 방지 보너스에게 있습니다
편집 :
나는 내가 그래서 첫 번째 항목으로 NestedScrollView
을 RecycleView
패딩을 설정하고 스크롤하고있어 github
v.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
Log.e("scrollY", ""+scrollY);
Log.e("oldScrollY", ""+oldScrollY);
Log.e("currentHeight", ""+currentHeight);
if(scrollY == 200) {
Log.e("==200", "JU");
} else if (scrollY < 200) {
Log.e("<200", ""+currentHeight);
if(currentHeight < fullHeight) {
Log.e("current<full", Integer.toString(deltaScroll));
deltaScroll = oldScrollY - scrollY;
currentHeight = currentHeight + deltaScroll;
if(currentHeight > fullHeight) {
currentHeight = fullHeight;
}
ku.getLayoutParams().height = currentHeight;
ku.requestLayout();
}
v.scrollTo(0, 200);
} else if (scrollY > oldScrollY) {
Log.e("Scroll DOWN", "" + Integer.toString(scrollY));
deltaScroll = scrollY - oldScrollY;
currentHeight = currentHeight - deltaScroll;
if(currentHeight > minHeight) {
ku.getLayoutParams().height = currentHeight;
ku.requestLayout();
v.scrollTo(0, 200);
} else {
currentHeight = minHeight;
ku.getLayoutParams().height = minHeight;
ku.requestLayout();
}
}
}
});
에 예를 만들었습니다 패딩이 표시되지 않습니다. 이렇게하면 이미 TOP에있을 때에도 TOP를 스크롤 할 수 있습니다.
모든 것이 효과가있는 것처럼 보이지만 천천히 스크롤 할 때 스크롤링이 "불안정"하다는 것을 알 수 있습니다 (충분히 빠르게 스크롤하면 발생하지 않음). 내 생각 엔 NestedScrollView
자체가 높이가 변하고 예를 들어 위로 스크롤하는 동안 스크롤이 발생하기 때문에 이러한 현상이 발생합니다.
은 종종 '불안해'성능을 이끈다. ViewPager를 사용하여 무엇을 정교하게 만드시겠습니까? 가능한 경우 레이아웃 XML을 공유하십시오 .... –
코디네이터 레이아웃을 살펴보십시오 – Rainmaker
@AbhishekSingh 내 모든보기가 포함 된 github가 있습니다 – CBeTJlu4ok