问题记录误以为自定义view调用invalidate()无效,onDraw()方法不重绘

问题描述:今天自定义了一个view,放在recyclerview中显示,正常每个item显示的不一样才对,因为每个不同的item我都对自定义view样式进行了修改,结果运行时,每个item显示的样式都是一样的。而且是按最后一次设置view的样式显示的。经过排查发现我把绘制的参数如:圆半径和位置,都设置成了静态的。根据静态的特性:类创建静态变量则一起创建,而且生命周期跟类相同,统一在方法区中存在。这样就导致了,我的所有自定义view用的都是共同的参数。所以就出现了所有自定义view都是一样的,而且是按最后一次设置参数显示。因为最后一次参数设置 改变了所有自定义view的参数(他们共用了一个静态变量)。至此 我以为invalidate()无效是错误的。

解决办法:把静态变量改为普通变量即可。

猜你喜欢

转载自blog.csdn.net/gaoqingliang521/article/details/112647010
今日推荐