作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有类似的问题:Update layout with the animation
基本上:我有一个垂直的 LinearLayout View ,带有编辑文本、按钮和列表。我想在按下按钮后隐藏 exittext 以便为列表腾出更多空间(按钮会上升)。第二次按下 edittext 应该再次可见。 Edittext 和按钮具有“wrap_content”高度。
我想用动画隐藏和显示编辑文本。
我通过重载 Animation 的 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);
}
问题:
我不知道如何计算高度以动画显示 - edittext.getHeight();当小部件被隐藏并且在布局定义中我使用“wrap_content”时返回 0。
帮忙吗?
最佳答案
在 Activity 完成绘制之前,您无法获取 edittext 的高度。所以你可以通过在你的编辑文本上添加 onpredrawListner 来获得它。
ViewTreeObserver treeObserver = edittext.getViewTreeObserver();
treeObserver.addOnPreDrawListener(new OnPreDrawListener() {
public boolean onPreDraw() {
int height = edittext.getHeight();
ViewTreeObserver removeTreeObserver = edittext.getViewTreeObserver();
removeTreeObserver.removeOnPreDrawListener(this);
}
}
现在你得到了高度,应用你想要的任何动画。
关于Android:如何先隐藏再显示带动画效果的View?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495812/
我是一名优秀的程序员,十分优秀!