そのために私のライブラリを使用できますViewPropertyObjectAnimator
。
mNestedScrollView
があなたNestedScrollView
であり、スクロールしたいmChildView
子であると仮定すると、次のことができます。View
ViewPropertyObjectAnimator.animate(mNestedScrollView).scrollY(mChildView.getTop()).start();
が呼び出しの時点でmChildView.getTop()
はないことを確認してください。0
.animate(...)
編集:
View's
私が言ったように、 CALL のときにトップがゼロでないことを確認してください.animate(...)
。言い換えれば.animate(...)
、あなたの子供View
がすでに次元を持っている場合にのみ呼び出してください。どうやってそれを判断できますか?たとえば、次のようにします。
mChildView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int width = mChildView.getWidth();
int height = mChildView.getHeight();
if (width > 0 && height > 0) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
mChildView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
mChildView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
ViewPropertyObjectAnimator.animate(mNestedScrollView)
.scrollY(mChildView.getTop())
.start();
}
}
});