我有两种看法,一种在另一种。显示firstView
,隐藏secondView
。按下一个按钮,一个将折叠,然后第二个将展开。问题在于secondView
是动态构建的:它在onMeasure
中具有高度计算(tag cloud,将标签包装到新行中,从而导致视图高度改变)。
因此,我可以使用以下代码将标签云容器视图的高度作为单行子视图获得,而无需计算高度。但是如何显示secondView
的实际高度?
view.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
int height = view.getMeasuredHeight();
答案 0 :(得分:0)
您可以使用ViewTreeObserver等待视图布局,然后获取高度和宽度。
int height;
int width
secondView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
height = secondView.getHeight();
width = secondView.getWidth();
secondView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
答案 1 :(得分:0)
解决方法如下:
view
的{{1}} RelativeLayout
设置为可见,但通过在屏幕外将其删除即可将其隐藏:设置view
layout_marginTop="-1000dp"
的实际高度(见下文)来获得可见的高度摘要:
view