【问题标题】:How can I know if I need to call setLayoutParams or just change the values of existing LayoutParams?我如何知道是否需要调用 setLayoutParams 或只是更改现有 LayoutParams 的值?
【发布时间】:2020-05-16 20:35:55
【问题描述】:

我如何知道 getLayotParams() 是返回对有效参数的引用还是只是参数的深层副本?

说:

MarginLayoutParams layoutParams = (MarginLayoutParams) getView().getLayoutParams();

layoutParams.leftMargin = horizontalMargin;
layoutParams.rightMargin = horizontalMargin;

够了,还是需要这条线?

parent.setLayoutParams(layoutParams);

【问题讨论】:

    标签: android margin deep-copy android-layoutparams


    【解决方案1】:

    getLayoutParams 返回实际的LayoutParams,而不是深拷贝。但是,更新参数不会触发布局,您必须调用requestLayout,当您使用setLayoutParams时会自动调用。

    因此,如果您想修改这些值并应用它们,您需要调用setLayoutParams 或使用requestLayout 触发布局。

    如果你使用 Kotlin,你也可以使用 updateLayoutParams 扩展函数。

    【讨论】:

    • 谢谢,如果你不告诉我,我怎么看出来?
    • 可以查看View类的源码,查看getLayoutParams方法。
    猜你喜欢
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2017-03-23
    相关资源
    最近更新 更多