在约束布局中获取子布局的高度和宽度

Posted

技术标签:

【中文标题】在约束布局中获取子布局的高度和宽度【英文标题】:Get Height and Width of a child layout in contraintlayout 【发布时间】:2018-09-05 15:22:51 【问题描述】:

我有一个约束布局,其中有一个子布局 (frame_layout)。使用 match_constraint 将宽度和高度设置为 0dp。一旦布局加载到屏幕上,我们如何获得这个 frame_layout 的高度和宽度?使用 layoutparams 给出 0dp。 getWidth 或 getHeight 再次给出 0dp。

【问题讨论】:

匹配约束将根据屏幕大小调整大小,因此在 oncreate 方法完成后,如果您尝试获取宽度和高度,它应该具有视图大小。或者使用延迟在 oncreate 中获取价值。 【参考方案1】:
final FrameLayout layout = (FrameLayout) findViewById(R.id.YOUR_VIEW_ID);
ViewTreeObserver vto = layout.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener (new OnGlobalLayoutListener()  
    @Override 
    public void onGlobalLayout() 
        layout.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
        int width  = layout.getMeasuredWidth();
        int height = layout.getMeasuredHeight(); 

     
);

【讨论】:

以上是关于在约束布局中获取子布局的高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 高度不是自动布局约束后子图像高度的高度。

Flutter的布局

如何为运行时计算的变量高度设置布局约束?

用于宽度或高度约束的布局格式选项?

在约束布局中根据设备宽度设置视图高度

添加 UIView 并使用自动布局重新计算约束