今天在使用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???