2013-10-15 1 views
1

내 문제는 smoothScrollToPositionFromTop 메서드가 duration 매개 변수를 무시한다는 것입니다. 난smoothScrollToPositionFromTop duration 매개 변수 무시

는 API에 대한 방법을 사용하려고> 10 내가 기대하고 무엇

listView.smoothScrollToPositionFromTop(position, listView.getHeight() - ROW_HEIGHT, 100); 

: 어떤 내용 높이에 대한이 100ms로 아래로 스크롤합니다.

내가 얻는 것 : 아래로 스크롤하지만 내 duration 매개 변수를 무시하십시오.

10 또는 100 또는 1000으로 설정하면 같은 시간으로 스크롤됩니다.

자세한 내용이 필요한 경우 정확히 정확히 무엇이 필요한지 말하면 업데이트됩니다.

UPD : 높은 지속 시간 (나는 11500 번 시도)과 잘 어울리고 정말 루옹이었습니다. 하지만 300 이하로 설정하면 ~ 1000처럼 스크롤됩니다. 내 목록보기의 행이 약 100 개 더 있습니다.

답변

1

당신은 그냥이 문제를 조우 Runnable .-

post(new Runnable() { 
    @Override 
    public void run() { 
     listView.smoothScrollToPositionFromTop(position, listView.getHeight() - ROW_HEIGHT, 100); 
    } 
}); 
+0

필요하지 않습니다. 그것은 그것없이 일합니다. 내 질문 업데이트 오전 –

1

내부 전화를 포함해야합니다. 당신이보기의 소수 따라 이동하는 경우 smoothScrollToPositionFromTop 이후

잘 작동 https://code.google.com/p/android/issues/detail?id=66744, 우리는 X 항목 내에서 목록보기 이동 : 시간 매개 변수를 명예를 충분히 빠르게 도면 뷰에서 안드로이드를 방지 AbsListView에 버그가 나타납니다 스크롤하고자하는 위치의 마지막 비트를 스크롤하여 모션을 시뮬레이션합니다.

예를 들어, 우리는 큰 목록을 가지고 있었고 버튼 클릭으로 스크롤을 맨 위로 제공하려고했습니다. 아래의 코드에서 우리는 목록의 깊이를 확인한 다음 필요에 따라 조정합니다. 그런 다음 마지막 비트를 스크롤합니다.

if (listView != null && listView.getCount() > 0) { 
    listView.post(new Runnable() { 
     @Override 
     public void run() { 
      if (listView.getFirstVisiblePosition() > 20) { 
       listView.setSelection(20); 
      } 
      listView.smoothScrollToPositionFromTop(0, 0, 300); 
     } 
    }); 
} 
+0

좋은 해결 방법! – wilsontgh

관련 문제