3
有没有办法强制android视图重绘它的背景? 我已经设置了一个可绘制的渐变形状作为背景,可以正常工作,但是在更改视图高度后,您可以看到那些难看的渐变步骤。如何强制android视图重绘它的背景可绘制? /可能是动画阻止它正常工作
我该怎么办? 我试过view.invalidate()
和view.refreshDrawableState()
,没有任何明显区别。
谢谢!
//编辑: 下面是一些更多的细节和我的代码: 在你的答案后,我认为绑定是我的可能不好的代码的结果。下面是我在做什么:
- 缩放视图
- 设置了新的宽度和高度,因为缩放视图不接受在其他领域的用户输入那么“老”之一(见android weird (at least for me) behaviour of control after scaling/doesn't accept input in it's whole area)
- 试图设置背景再次(其中包含一个梯度,并与圆角的矩形)
这里是我的代码:
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
}
在设备上,您可以看到背景可绘制已更改,但存在闪烁,在我看来,像动画结束之前应用了背景更改。以编程方式它应该结束!或者我错了?
再次感谢您!
抖动应该解决梯度条带问题,但我不知道如何在xml中的可绘制形状上启用它。以编程方式,每个Drawable都有setDither(boolean)。 – bigstones 2011-01-20 14:44:33
我们可能需要查看更多代码。我会认为view.invalidate()会工作。你可以尝试postInvalidate,如果你碰巧不在UI线程上。 – 2011-01-20 14:44:50