Android视图:维度更改回调
我想知道是否有在视图维度更改时触发的回调 Android Studio自动生成的自定义视图在onDraw()中有如下代码: 如果这些填充和内容宽度在大多数情况下都不会改变,那么继续重新计算这些填充和内容宽度似乎是一种浪费。我正在寻找一个Android视图:维度更改回调,android,android-view,android-custom-view,Android,Android View,Android Custom View,我想知道是否有在视图维度更改时触发的回调 Android Studio自动生成的自定义视图在onDraw()中有如下代码: 如果这些填充和内容宽度在大多数情况下都不会改变,那么继续重新计算这些填充和内容宽度似乎是一种浪费。我正在寻找一个回调,它只会在这些值发生变化时更新这些值。您将寻找: 当此视图的大小更改时,将在布局期间调用此函数。如果您刚刚添加到视图层次结构,则会使用旧值0调用您 参数 w此视图的当前宽度。 h此视图的当前高度。 此视图的旧宽度。 此视图的旧高度 不过,这对填充更改没有帮助。
回调
,它只会在这些值发生变化时更新这些值。您将寻找:
当此视图的大小更改时,将在布局期间调用此函数。如果您刚刚添加到视图层次结构,则会使用旧值0调用您
参数w此视图的当前宽度。
h此视图的当前高度。
此视图的旧宽度。
此视图的旧高度
不过,这对填充更改没有帮助。您仍然需要检查它们,或者覆盖
setPadding()
并在那里重新计算。谢谢我所寻找的!可惜它不是Android Studio的默认生成代码。
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
paddingLeft = getPaddingLeft();
paddingTop = getPaddingTop();
paddingRight = getPaddingRight();
paddingBottom = getPaddingBottom();
contentWidth = getWidth() - mPaddingLeft - mPaddingRight;
contentHeight = getHeight() - mPaddingTop - mPaddingBottom;
...
}