有没有办法强制 android 视图重绘它的背景?我设置了一个带有渐变的可绘制形状作为背景,效果很好,但是在更改视图的高度后,您可以看到那些难看的渐变步骤。
我能做些什么?我试过了view.invalidate()
,view.refreshDrawableState()
没有任何明显的区别。
谢谢!
//编辑:这里有一些更多的细节和我的代码: 在你回答之后,我认为条带是我可能是错误代码的结果。这是我正在做的事情:
- 缩放视图
- 设置其新的宽度和高度,因为缩放视图不接受其他区域的用户输入,然后是“旧”视图(参见android 奇怪的(至少对我而言)缩放后的控制行为 / 不接受整个区域的输入)
- 尝试再次设置背景(其中包含渐变和圆角矩形)
这是我的代码:
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
}
在设备上,您可以看到背景可绘制对象发生了变化,但在我看来,在动画结束之前应用了背景变化的闪烁。以编程方式应该结束了!还是我错了?
再次感谢你!