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

            }
        });