android scrollview 가 맨 위로 미 끄 러 지 거나 지 정 된 위치 로 미 끄 러 지 는 실현 방법

안 드 로 이 드 개발 에 서 는 한 화면 에 모든 콘 텐 츠 가 표시 되 지 않 는 현상 을 많이 볼 수 있 습 니 다.이 럴 때 스크롤 뷰 로 화면 을 굴 리 는 것 을 생각 할 것 이라는 것 을 잘 알 고 있 습 니 다.
이 럴 때 는 어떤 수요 때문에 scrollview 를 처음 표시 할 때 어 딘 가 에 위치 하 라 고 요구 합 니 다.이것 이 바로 이것 을 말 하 는 것 입 니 다~
먼저,scrollView.scrollTo(x,y);이 방법 은 스크롤 바 를 위치 추적 할 수 있다 는 것 은 모두 가 알 고 있다.
But,이 방법 이 효과 가 없 을 때 가 많은 것 같은 데...................................................
위 에서 말 한 스크롤 토 를 호출 하 는 방법 은 스크롤 바 를 위치 추적 하 는 효과 가 없 는 것 처럼 보 입 니 다.사실은 우리 가 onCreate 에서 호출 한 이 방법 이기 때 문 입 니 다.onCreate 방법 이 끝나 지 않 았 을 때 activity 의 데 이 터 를 완전히 불 러 오지 않 았 기 때문에 이 방법 을 호출 하 는 것 은 실제 적 인 효과 가 없 을 것 입 니 다.
소,정확 한 호출 방법 이 왔 습 니 다~
runnable 인 터 페 이 스 를 먼저 정의 합 니 다.
 

private Runnable runnable = new Runnable() { 
 
 @Override 
 public void run() { 
  scrollView.scrollTo(0, 300);//          
 } 
}; 
그리고 스크롤 바 위 치 를 주동 적 으로 찾 으 려 는 곳 에서 handler 로 이 runnable 대상 을 post 로 내 보 내 는 것 이 좋 습 니 다.시간 을 지연 시 키 는 것 이 좋 습 니 다. 

handler = new Handler(); 
handler.postDelayed(runnable, 200); 
이렇게 하면 주동 적 으로 scrollview 를 임의의 위치 에 위치 시 키 는 역할 을 할 수 있 습 니 다~
또 스크롤 뷰 를 맨 밑 에 직접 표시 해 야 하 는 경우 도 있 습 니 다.다음 과 같은 방법 을 사용 할 수 있 습 니 다.

scrollView.scrollTo(0, linearLayout.getMeasuredHeight() - scrollView.getHeight());
그 중에서 도 linearLayout 는 scrollview 의 하위 view 입 니 다.표시 할 때 scrollview 의 맨 아래 를 바로 표시 할 수 있 습 니 다~
스크롤 뷰 를 지정 한 위치 로 스크롤

final TextView titleTwo = (TextView) findViewById(R.id.title_two);
  final boolean scrollDown = getIntent().getBooleanExtra(SCROLL_DOWN, false);
  mRootScrollView = (ScrollView) findViewById(R.id.root);
  if (scrollDown) {
   mRootScrollView.post(new Runnable() {
    @Override
    public void run() {
     //To change body of implemented methods use File | Settings | File Templates.
//     mRootScrollView.fullScroll(ScrollView.FOCUS_DOWN);
     int[] location = new int[2];
     titleTwo.getLocationOnScreen(location);
     int offset = location[1] - mRootScrollView.getMeasuredHeight();
     if (offset < 0) {
      offset = 0;
     }
     mRootScrollView.smoothScrollTo(0, offset);
    }
   });
  }
끝까지 굴 러 가기:
mRootScrollView.fullScroll(ScrollView.FOCUS_DOWN);
맨 위로 스크롤:
mRootScrollView.fullScroll(ScrollView.FOCUS_UP);
메시지 대기 열 에서 스크롤 을 실행 할 수 있 도록 post runnable 이 필요 합 니 다!
첫째,handler.post(runnable);새로 스 레 드 를 여 는 것 이 아니 라 UI 메 인 스 레 드 에 run()방법 을 동시에 실행 하도록 합 니 다.
둘째,handler 에 넣 은 이 유 는 View 가 모두 그 려 졌 음 을 보증 하기 위해 서 입 니 다.그렇지 않 으 면 resume()에 넣 고 실행 해도 될 것 같 습 니 다.
셋째,smoothScrollTo 는 scrollto 와 유사 하지만,스크롤 할 때 는 바로 어 딘 가로 스크롤 하 는 것 이 아니 라 완만 하 다.또한,smoothScrollto()방법 은 미끄럼 애니메이션 을 끊 을 수 있 습 니 다.
이상 의 안 드 로 이 드 scrollview 가 정상 으로 미 끄 러 지 거나 지 정 된 위치 로 미 끄 러 지 는 실현 방법 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기