我想知道是否有针对视图维度更改触发的回调。
Android Studio的自动生成的自定义视图在onDraw()中具有如下代码:
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
paddingLeft = getPaddingLeft();
paddingTop = getPaddingTop();
paddingRight = getPaddingRight();
paddingBottom = getPaddingBottom();
contentWidth = getWidth() - mPaddingLeft - mPaddingRight;
contentHeight = getHeight() - mPaddingTop - mPaddingBottom;
...
}
如果大多数时间它们不会改变,这似乎是浪费,不断重新计算这些填充和内容宽度。我正在寻找一个Callback
只会更新这些值。
答案 0 :(得分:1)
您正在寻找onSizeChanged()
:
当此视图的大小发生更改时,将在布局期间调用此方法。如果刚刚添加到视图层次结构中,则使用旧值0调用。
参数
w此视图的当前宽度 h此视图的当前高度 oldw这个视图的旧宽度。
oldh这个观点的高度。
但这对填充更改没有帮助。您仍然需要检查它们,或者还要覆盖setPadding()
并重新计算。