3 回答

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

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