我有一个带有visibility = gone和height = wrap_content的ListView,我需要它的高度来制作展开动画。
我已经尝试过了:
view.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
int height = view.getMeasuredHeight();
和
v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
int height = view.getMeasuredHeight();
和
v.measure(View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.MATCH_PARENT, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED));
int height = view.getMeasuredHeight();
但它让我的价值降低了。
我试图在onResume之后这样做。
答案 0 :(得分:11)
我找到的唯一方法是从可见标题视图的宽度设置我的视图的宽度,然后下面的代码返回正确的值。
int widthSpec = MeasureSpec.makeMeasureSpec(headerView.getWidth(), MeasureSpec.EXACTLY);
int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
v.measure(widthSpec, heightSpec);
int height = v.getMeasuredHeight();
答案 1 :(得分:3)
view.post(new Runnable() {
@Override
public void run() {
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int height = view.getMeasuredHeight();
}
});
这对我有用。方法" post"确保视图已添加到屏幕上。
答案 2 :(得分:2)
当一个物体消失时,它不再是布局的一部分。也许你的意思是将你的对象设置为不可见,在这种情况下你可能会得到一个感性值
答案 3 :(得分:2)
如果您想为可见性为 gone
的视图的高度设置动画,只有一种有效的方法可以做到这一点
先在隐藏视图的xml中添加这个
android:animateLayoutChanges="true"
那么这就是你可以将它设置为动画的方法
yourView.layoutTransition.enableTransitionType(LayoutTransition.CHANGING)
Android 将在该特定视图上为任何布局更改设置动画
答案 4 :(得分:-1)
这对我有用
const str = 'A';
const matches = data.filter(el => el.target.data.name === str);