我有一个包含LinearLayout的ScrollView,在LinearLayout中我有一个视图,我根据被按下的按钮展开或折叠。这件作品很好用。
我想要做的是重新定位ScrollView,以便在展开视图时自动重新定位滚动视图,以便可以看到展开的视图。我希望视图能够自动重新定位,这样用户就不必滚动了 目前,当视图扩展时,所有内容都会被推下,您必须向上滚动才能查看新扩展的内容。我在动画结束后尝试重新定位,但该部分代码永远不会触发。以下是我的代码。
public void animateExpandCollapse(View v) {
View captionLayout = null;
View parentLayout = null;
if(v.getId() == R.id.squareCal) {
captionLayout = (LinearLayout) findViewById(R.id.layout3);
parentLayout = (LinearLayout) findViewById(R.id.squareLayout);
} else if(v.getId() == R.id.circleCal) {
captionLayout = (LinearLayout) findViewById(R.id.layout2);
parentLayout = (LinearLayout) findViewById(R.id.circleLayout01);
}
if (!more) {
dda = new DropDownAnim(captionLayout, 350, false);
more=true;
} else {
dda = new DropDownAnim(captionLayout, 350, true);
more=false;
}
dda.setDuration(350);
parentLayout.startAnimation(dda);
// Here, I want to position ScrollView to the bottom
// After the animation has finished but this never fires.
if(dda.hasEnded() ) {
ScrollView sv = (ScrollView)findViewById(R.id.calScroller);
sv.scrollTo(0, sv.getBottom());
}
return;
}
答案 0 :(得分:0)
在线搜索后,我找到了以下解决方案。我希望这有助于某人。
dda.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
ScrollView sv = (ScrollView)findViewById(R.id.calScroller);
sv.scrollTo(0, sv.getBottom());
}
});