首页 > 解决方案 > 单击时如何展开/折叠 EditText?

问题描述

我想创建一个动画以在单击 EditText(到我设置的高度)时展开它,并且当它失去焦点(我单击其他内容)时,它应该折叠回一行。这是我尝试过的,但它什么也没做..

public class CollapseDownAnimation extends Animation {
    private EditText mDescription;
    private boolean mDown;

    public CollapseDownAnimation(EditText description, boolean down) {
        this.mDescription=description;
        this.mDown=down;
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation transformation) {
        int newHeight;
        if(mDown) {
            newHeight=(int) (300 * interpolatedTime);
        } else {
            newHeight=(int) (300 * (1-interpolatedTime));
        }
        mDescription.getLayoutParams().height=newHeight;
        mDescription.requestLayout();
    }

    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
    }

    @Override
    public boolean willChangeBounds() {
        return true;
    }
}

EditText mDescription;
mDescription = view.findViewById(R.id.description);
        CollapseDownAnimation anim = new CollapseDownAnimation(mDescription, mDescription.hasFocus());
        anim.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        Log.d(TAG, "the focus is "+mDescription.hasFocus());
        mDescription.setAnimation(anim);

标签: javaandroidanimationandroid-edittext

解决方案


推荐阅读