そのために私のライブラリを使用できます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();
}
}
});