Android视图:维度更改回调

时间:2014-08-26 23:20:05

标签: android android-view android-custom-view

我想知道是否有针对视图维度更改触发的回调。

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只会更新这些值。

1 个答案:

答案 0 :(得分:1)

您正在寻找onSizeChanged()

  

当此视图的大小发生更改时,将在布局期间调用此方法。如果刚刚添加到视图层次结构中,则使用旧值0调用。

     

参数
  w此视图的当前宽度   h此视图的当前高度   oldw这个视图的旧宽度。
  oldh这个观点的高度。

但这对填充更改没有帮助。您仍然需要检查它们,或者还要覆盖setPadding()并重新计算。