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