3 回答

TA貢獻1868條經(jīng)驗 獲得超4個贊
1、OnDraw函數(shù)在程序啟動和任何界面刷新情況下都會調(diào)用,你點一下菜單或者鼠標通過客戶區(qū),就會造成無數(shù)個彈出窗口。
2、如果程序運行中一個彈出也沒有,那么兩種情況:一個是OnDraw不是系統(tǒng)提供的重載函數(shù),你寫錯了,另外一個是你的View不是標準CView繼承類,比如CFormView繼承,那么OnDraw是無效的,調(diào)用的是OnPaint。
3、view的invalidate未必一定會出發(fā)onDraw,
如果高版本沒有出發(fā)onDraw,可能是做了相關(guān)的優(yōu)化,
認為你此次的invalidate并不需要出發(fā)onDraw,或者是其他的邏輯。
如果你想在搞版本也出發(fā)試試以下方法
方法1:
((View)view.getParnet()).invalidate();
方法2:
view.invalidate();view.forceLayout();view.requestLayout();

TA貢獻1790條經(jīng)驗 獲得超9個贊
view的invalidate未必一定會出發(fā)onDraw,如果高版本沒有出發(fā)onDraw,可能是做了相關(guān)的優(yōu)化,認為你此次的invalidate并不需要出發(fā)onDraw,或者是其他的邏輯。如果你想在搞版本也出發(fā)試試以下方法方法1:((View)view.getParnet()).invalidate();方法2:view.invalidate();view.forceLayout();view.requestLayout();
- 3 回答
- 0 關(guān)注
- 279 瀏覽
添加回答
舉報