获取隐藏动态视图的高度

时间:2018-08-27 21:45:10

标签: android android-animation android-view

我有两种看法,一种在另一种。显示firstView,隐藏secondView。按下一个按钮,一个将折叠,然后第二个将展开。问题在于secondView是动态构建的:它在onMeasure中具有高度计算(tag cloud,将标签包装到新行中,从而导致视图高度改变)。

因此,我可以使用以下代码将标签云容器视图的高度作为单行子视图获得,而无需计算高度。但是如何显示secondView的实际高度?

view.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
int height = view.getMeasuredHeight();

2 个答案:

答案 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