ViewGroup.LayoutParams踩坑

今天在使用LayoutParams时出现了一个问题,我是这样用的:

ViewGroup.LayoutParams iv_share_params = ivshare.getLayoutParams();
iv_share_params.width = itemWidth;
iv_share_params.height = itemWidth;
ivshare.setLayoutParams(iv_share_params);
iv_album_choose.setLayoutParams(iv_share_params);

重点是,两个LayoutParams
都是ViewGroup的LayoutParams
,然后一执行就出现下列错误:

java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.RelativeLayout
异常说的是两个是不同类型的LayoutParams

但明明都是ViewGroup的LayoutParams
而且我确定ViewGroup的LayoutParams
而且log上没有标位置

然后就在stackoverflow上查找答案,最后试了发现不去新建一个LayoutParams,而是从原来的View中直接获取LayoutParams。
改完运行结果没有出现异常了。
所以,当一个View已经有了LayoutParams,不能再次添加一个新创建的LayoutParams???

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容