2011-12-27 4 views
0

android scrollView에서 scrollview에서 가장 낮은 위치를 찾으려면 scrollTo(x,y) 메서드를 사용하여 오른쪽 아래로 스크롤 할 수 있습니다. 실제 숫자 값이 필요합니다. getHeight() 메서드를 사용하면 올바른 값을 반환하지 않습니다. 스크롤바가 때때로 끝까지 스크롤되며 때로는 도달하지 못합니다. 스크롤 뷰에는 텍스트 뷰가있는 선형 레이아웃이 있습니다. 내가 잃어버린 뭔가가 있어야합니까?ScrollView에서 맨 아래 스크롤 가능한 위치는 어떻게 찾습니까?

답변

1

감사합니다. 누구든지 관심이 있으면 빠른 해킹을 발견했습니다.

sView.fullScroll(View.FOCUS_DOWN); 
sView.fullScroll(View.FOCUS_DOWN); 
y = sView.getScrollY(); 
sView.fullScroll(View.FOCUS_UP); 

스크롤 할 수있는 부분의 맨 아래로 내려 가서 y를 수집 한 다음 다시 위로 이동합니다. 너무 빨리 발생하므로 눈에 보이지 않으며 매번 y의 최저값을 얻게됩니다. 포커스를 두 번 호출해야합니다. 그렇지 않으면 y는 0을 반환합니다.

1

끝까지 스크롤하려는 경우 fullScroll (ScrollView.FOCUS_DOWN) 만 사용할 수 있어야합니다. 스크롤 뷰의 높이를 기준으로 특히 수치가 필요한 경우 스크롤 뷰를 서브 클래스 화하고 onSizeChanged를 재정 의하여 실제 수치 높이를 제공해야합니다. onSizeChanged는 onResume 이후에만 호출되며 작업이 다시 시작될 때마다 호출되지는 않습니다.

가끔씩 끝까지 스크롤하고 때로는 경쟁 조건 때문에 스크롤하지 않는 이유 중 일부가 있습니다. 때로 스크롤이 발생하여보기를 채우는 것과 같은 다른 중요한 일이 발생하기 때문에 아무 것도하지 않는 것처럼 보입니다. 당신의 스크롤 뷰의 핸들러로 통화를 게시

시도 :

yourScrollView.post(new Runnable(){ 
    @Override 
    public void run(){ 
    yourScrollView.fullScroll(ScrollView.FOCUS_DOWN); 
    } 
}; 

가 때로는 약간의 지연이 도움이 될 수 있습니다 추가 : 응답에 대한

yourScrollView.postDelayed(new Runnable(){ 
    @Override 
    public void run(){ 
    yourScrollView.fullScroll(ScrollView.FOCUS_DOWN); 
    } 
}, 200); 
관련 문제