0

我有一个包含 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;
    }
4

1 回答 1

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());
            }
        });
于 2012-06-07T01:06:53.723 回答