Android:如何隐藏然后显示具有动画效果的View?

tom*_*ash 6 layout animation android hide

我有类似这样的问题:用动画更新布局

基本上:我有一个带有edittext,按钮和列表的垂直LinearLayout视图.我想在按下按钮后隐藏exittext,为列表腾出更多空间(按钮会上升).在第二次按下edittext应该再次可见.Edittext和按钮具有"wrap_content"高度.

我想用动画隐藏和显示edittext.

我成功地通过重载动画的applyTransformation来动画隐藏:

final float edittextheight= edittext.getHeight();
[....]
@Override
protected void applyTransformation(float interpolatedTime,
        Transformation t)
{
    super.applyTransformation(interpolatedTime, t);
    android.view.ViewGroup.LayoutParams lp = edittext.getLayoutParams();
    lp.height = (int)(edittextheight*(1.0-interpolatedTime));
    edittext.setLayoutParams(lp);
}
Run Code Online (Sandbox Code Playgroud)

问题:

我不知道如何计算动画显示的高度 - edittext.getHeight(); 隐藏窗口小部件时返回​​0,并且在布局定义中我使用"wrap_content".

救命?

Ste*_*ley 1

你能缓存EditText的高度吗?换句话说,当您隐藏它时,将其高度(使用 getHeight())保存在 int 中,即使小部件本身不再可见,您也可以稍后读取它。

但是,我怀疑您也面临着与我遇到的类似问题,如本问题所述。本质上,在 onCreate、onStart 和 onPause全部完成之前,您无法获取 View 的高度,因为在此之前,Activity 还没有完成在屏幕上的绘制。在尝试获取其高度之前了解布局过程已完成的一个好方法是在按钮 ClickListener 中获取高度;在布局完成之前您无法单击该按钮,因此它将完成高度的计算。