[size=medium]因为项目需要,需要在自定义View可见之后再动态变化宽度。
但宽度在你一开始findId的时候已经调用[color=red]measure(width, height)[/color] 初始化好该自定义View的宽高。
查了一下,发现一个刷新View的方法 [color=red]invalidate(),[/color]调用之后,自定义View只会重绘内容(调用[color=red]onDraw()[/color]方法),而宽度还是固定不变,所以也没达到项目需求。
最后查了一下发现一个方法:[color=red]requestLayout(),[/color]
具体作用:[color=red]当某个组件需要更多的显示空间时,调用requestLayout()就会重新调用measure(width, height) 计算该View的宽高[/color][/size]
但宽度在你一开始findId的时候已经调用[color=red]measure(width, height)[/color] 初始化好该自定义View的宽高。
查了一下,发现一个刷新View的方法 [color=red]invalidate(),[/color]调用之后,自定义View只会重绘内容(调用[color=red]onDraw()[/color]方法),而宽度还是固定不变,所以也没达到项目需求。
最后查了一下发现一个方法:[color=red]requestLayout(),[/color]
具体作用:[color=red]当某个组件需要更多的显示空间时,调用requestLayout()就会重新调用measure(width, height) 计算该View的宽高[/color][/size]