Android ViewGroup.setScaleX()导致视图被剪裁

use*_*421 8 java android zoom scale viewgroup

我使用NineOldAndroids库来扩展我的自定义布局.

public class MyLayout extends FrameLayout {
  // LayoutParams.MATCH_PARENT and all.
  ...
  @Override
  public boolean setPositionAndScale(ViewGroup v, PositionAndScale pas, PointInfo pi) {
    ...
    mScale = pas.getScale();
    ViewHelper.setScaleX(this, mScale);
    ViewHelper.setScaleY(this, mScale);
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过FrameLayout和AbsoluteLayout.都具有相同的效果.当mScale < 1.0 缩放/变焦的作品,但布局的一部分被截断.

mScale = 1.0:

mScale = 1.0

mScale < 1.0: 缩放/缩放工作但布局被剪裁

mScale <1.0

我该如何解决这个问题?

编辑:照片拍摄于ICS.所以我不认为这是NineOldAndroids的问题.

use*_*421 3

万一有人遇到和我一样的情况。我最终使用了这种方法:

protected void setScale(float scale, boolean updateView) {
    mScale = scale;
    if (updateView) {
        LayoutParams params = getLayoutParams();
        onUpdateScale(scale, params);
        setLayoutParams(params);
    }
}

protected void onUpdateScale(float scale, LayoutParams params) {
    params.leftMargin = (int) (mModel.getX() * scale);
    params.topMargin = (int) (mModel.getY() * scale);
    params.width = (int) (mModel.getWidth() * scale);
    params.height = (int) (mModel.getHeight() * scale);
}
Run Code Online (Sandbox Code Playgroud)