android布局控件的LayoutParams

本文深入解析了ViewGroup.LayoutParams在Android视图布局中的作用与使用方法。详细介绍了getLayoutParams()和setLayoutParams()函数的功能,强调了当View未附加到父ViewGroup时getLayoutParams()将返回null的情况,以及setLayoutParams()函数在设置布局参数时可能引发的类型转换错误。
摘要由CSDN通过智能技术生成
/**
 * Get the LayoutParams associated with this view. All views should have
 * layout parameters. These supply parameters to the <i>parent</i> of this
 * view specifying how it should be arranged. There are many subclasses of
 * ViewGroup.LayoutParams, and these correspond to the different subclasses
 * of ViewGroup that are responsible for arranging their children.
 *
 * This method may return null if this View is not attached to a parent
 * ViewGroup or {@link #setLayoutParams(android.view.ViewGroup.LayoutParams)}
 * was not invoked successfully. When a View is attached to a parent
 * ViewGroup, this method must not return null.
 *
 * @return The LayoutParams associated with this view, or null if no
 *         parameters have been set yet
 */
@ViewDebug.ExportedProperty(deepExport = true, prefix = "layout_")
public ViewGroup.LayoutParams getLayoutParams() {
    return mLayoutParams;
}

  



getLayoutParams() view没有attched到parent的时候,会返回null。

/**
 * Set the layout parameters associated with this view. These supply
 * parameters to the <i>parent</i> of this view specifying how it should be
 * arranged. There are many subclasses of ViewGroup.LayoutParams, and these
 * correspond to the different subclasses of ViewGroup that are responsible
 * for arranging their children.
 *
 * @param params The layout parameters for this view, cannot be null
 */
public void setLayoutParams(ViewGroup.LayoutParams params) {
    if (params == null) {
        throw new NullPointerException("Layout parameters cannot be null");
    }
    mLayoutParams = params;
    resolveLayoutParams();
    if (mParent instanceof ViewGroup) {
        ((ViewGroup) mParent).onSetLayoutParams(this, params);
    }
    requestLayout();
}

  


setLayoutParams() 这个函数最容易引出的就是参数类型转换错误,给控件设置参数的时候,设置其父布局的参数,想想xml中的参数都是相对父布局的就比较好理解了,只有padding是自身的,layoutParams中就没有padding属性。
待我看看源码。

转载于:https://www.cnblogs.com/aprz512/p/4954343.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值