代码之家  ›  专栏  ›  技术社区  ›  Elad Benda

我如何知道我是需要调用setLayoutParams还是仅仅更改现有LayoutParams的值?

  •  0
  • Elad Benda  · 技术社区  · 4 年前

    我怎么知道getLayoutParams()是返回对有效参数的引用,还是只是参数的深层副本?

    MarginLayoutParams layoutParams = (MarginLayoutParams) getView().getLayoutParams();
    
    layoutParams.leftMargin = horizontalMargin;
    layoutParams.rightMargin = horizontalMargin;
    

    够了吗,还是也需要这条线?

    parent.setLayoutParams(layoutParams);
    
    0 回复  |  直到 4 年前
        1
  •  0
  •   Francesc    4 年前

    getLayoutParams 返回实际值 LayoutParams ,不是深度复制。但是,更新参数不会触发布局,您必须调用 requestLayout setLayoutParams .

    请求布局 .

    如果使用Kotlin,则可以使用 updateLayoutParams