Android
스크롤 이슈 해결
Birthmark
2020. 5. 29. 16:11
setOnScrollChangeListener로 y좌표값 얻은 후 버튼 클릭시 스크롤뷰 height에 y좌표값을 더했더니 해결됐다.
mScrollView.setOnScrollChangeListener(new ScrollView.OnScrollChangeListener() { @Override public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { View view = mScrollView.getChildAt(mScrollView.getChildCount() - 1); int diff = (view.getBottom() - (mScrollView.getHeight() + mScrollView.getScrollY())); stateY = mScrollView.getScrollY(); Log.d("[ scrolling ]", "Y: " + stateY); if (diff == 0 ) { Toast.makeText(getApplicationContext(), "一番下です。", Toast.LENGTH_SHORT).show(); }if(mScrollView.getScrollY()==0){ Toast.makeText(getApplicationContext(), "一番上です。", Toast.LENGTH_SHORT).show(); } } });
iv_down.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ mScrollView.post(new Runnable() { public void run() { mScrollView.scrollTo(0, stateY +mScrollView.getHeight() ); stateY = mScrollView.getScrollY(); Log.d("[ click DOWN ]", "current Y :" + stateY); } }); } }); iv_up.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ mScrollView.post(new Runnable() { public void run() { mScrollView.scrollTo(0, stateY - mScrollView.getHeight()); stateY = mScrollView.getScrollY(); Log.d("[ click UP ]", "current Y :" + stateY); } }); } });