Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android视图:维度更改回调_Android_Android View_Android Custom View - Fatal编程技术网

Android视图:维度更改回调

Android视图:维度更改回调,android,android-view,android-custom-view,Android,Android View,Android Custom View,我想知道是否有在视图维度更改时触发的回调 Android Studio自动生成的自定义视图在onDraw()中有如下代码: 如果这些填充和内容宽度在大多数情况下都不会改变,那么继续重新计算这些填充和内容宽度似乎是一种浪费。我正在寻找一个回调,它只会在这些值发生变化时更新这些值。您将寻找: 当此视图的大小更改时,将在布局期间调用此函数。如果您刚刚添加到视图层次结构,则会使用旧值0调用您 参数 w此视图的当前宽度。 h此视图的当前高度。 此视图的旧宽度。 此视图的旧高度 不过,这对填充更改没有帮助。

我想知道是否有在视图维度更改时触发的回调

Android Studio自动生成的自定义视图在onDraw()中有如下代码:

如果这些填充和内容宽度在大多数情况下都不会改变,那么继续重新计算这些填充和内容宽度似乎是一种浪费。我正在寻找一个
回调
,它只会在这些值发生变化时更新这些值。

您将寻找:

当此视图的大小更改时,将在布局期间调用此函数。如果您刚刚添加到视图层次结构,则会使用旧值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;
    ...
}