3

有没有办法强制 android 视图重绘它的背景?我设置了一个带有渐变的可绘制形状作为背景,效果很好,但是在更改视图的高度后,您可以看到那些难看的渐变步骤。

我能做些什么?我试过了view.invalidate()view.refreshDrawableState()没有任何明显的区别。

谢谢!

//编辑:这里有一些更多的细节和我的代码: 在你回答之后,我认为条带是我可能是错误代码的结果。这是我正在做的事情:

  1. 缩放视图
  2. 设置其新的宽度和高度,因为缩放视图不接受其他区域的用户输入,然后是“旧”视图(参见android 奇怪的(至少对我而言)缩放后的控制行为 / 不接受整个区域的输入
  3. 尝试再次设置背景(其中包含渐变和圆角矩形)

这是我的代码:

public void onAnimationEnd(Animation animation)
{
    MyView view = (MyView) ((ExtendedScaleAnimation) animation).getView();
    view.getLayoutParams().width = toWidth;
    view.getLayoutParams().height = toHeight;
    view.clearAnimation();
    view.requestLayout();
    view.refreshBackground(); // background will be changed
}

在设备上,您可以看到背景可绘制对象发生了变化,但在我看来,在动画结束之前应用了背景变化的闪烁。以编程方式应该结束了!还是我错了?

再次感谢你!

4

1 回答 1

2

你可以在调整大小后尝试:v.setBackgroundResource(null); v.setBackgroundResource(...我的可绘制...);

于 2011-01-20T15:03:16.577 回答