이
int maxScroll = yourScrollView.getChildAt(0).getMeasuredWidth() - yourScrollView.getWidth();
변화 getHeight에 getWidth()을()을 수행하여 폭 최대 스크롤을 얻을 수 있습니다 항상 여기에 있습니다 :
public class myScrollView extends ScrollView
{
public myScrollView(Context context)
{
super(context);
}
public myScrollView(Context context, AttributeSet attributeSet)
{
super(context,attributeSet);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt)
{
View view = (View)getChildAt(getChildCount()-1);
int d = view.getBottom();
d -= (getHeight()+getScrollY());
if(d==0)
{
//you are at the end of the list in scrollview
//do what you wanna do here
}
else
super.onScrollChanged(l,t,oldl,oldt);
}
}
xml 레이아웃에서 myScrollView를 사용하거나 yo에서 인스턴스화 할 수 있습니다. ur 코드. 힌트 : 사용자가 목록의 끝을 10 번 자주 친다면 코드는 10 번 실행됩니다. 원격 서버의 데이터를로드하여 목록을 업데이트하려는 경우 (대부분의 경우) 바람직하지 않을 수 있습니다. 원하지 않는 상황을 예측하고 피하십시오.
힌트 2 : 때로는 목록의 끝에 가까워지면 스크립트를 실행할 적절한시기가 될 수 있습니다. 예를 들어 사용자는 기사 목록을 읽고 끝에 가까워지고 있습니다. 목록이 완료되기 전에 더 많이로드하기 시작합니다. 이렇게하려면, 당신의 목적을 성취하기 위해이 작업을 수행 :
if(d<=SOME_THRESHOLD) {}
ScrollView는 하나의 자식 만 가질 수 있으므로 확실한 위치는 다음과 같습니다. if (scrollView.getScrollY() + scrollView.getHeight()> = scrollView.getChildAt (0) .getMeasuredHeight()) {/ * 스크롤 한 아래로 * /} – Tom
이것은 방법에 배치 되었습니까? 이 코드는 어떻게 구현 되었습니까? –
@ItzHoudini 가능한 한 제네릭으로 만들었으므로 원하는 방식으로 사용할 수 있습니다. – sanna