我有一个TextView,我想要设置一个动画。 最初,TextView设置为visibility = GONE,高度为wrap_content。当用户执行特定操作时,TextView将设置为可见。几秒钟后,我想将TextView的高度从它的wrap_content高度设置为0dp。我没有任何问题。我的问题出现在动画结束时。动画完成后,我将TextView设置回visibility = GONE并尝试将TextView的高度重置为wrap_content,但高度似乎没有变化。
我尝试将TextView的布局参数设置回wrap_content的高度,然后使TextView无效,但这不起作用。
知道如何去做吗?
以下是我目前正在制作动画的方式:
Animation slideUp = new Animation() {
{
setDuration(1000);
setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mTxtTimerSet.getLayoutParams();
lp.height = LinearLayout.LayoutParams.WRAP_CONTENT;
mTxtTimerSet.setVisibility(View.INVISIBLE);
mTxtTimerSet.setLayoutParams(lp);
mTxtTimerSet.invalidate();
mTxtTimerSet.setVisibility(View.GONE);
}
});
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mTxtTimerSet.getLayoutParams();
lp.height = mTxtTimerSet.getHeight() - ((int) (mTxtTimerSet.getHeight() * interpolatedTime));
mTxtTimerSet.setLayoutParams(lp);
}
};
mTxtTimerSet.startAnimation(slideUp);
由于
答案 0 :(得分:0)
动画结束后如何检查TextBox的高度?也许您想使用visibility=View.INVISIBLE
代替View.GONE
?如果您想再次为其设置动画,可以尝试在动画开始时指定宽度。