我有一个自定义ViewGroup
,它会覆盖draw()
来为其子项绘制一些内容。它适当地调用构造函数上的setWillNotDraw(false)
,并且在正常条件下,按预期工作。
我的问题开始时,在布局XML中,在这样的视图上我分配了一个背景drawable(“启动画面”),稍后在应用程序中我删除了这个背景(setBackgroundDrawable(null)
)。这种情况只发生一次,而应用程序正在初始化。
<com.regaliz.gui.layouts.FunqRootLayout xmlns:android="..."
.
android:background="@drawable/a_filmnew_cover_play_splash">
从那时起,每当我使onDraw
无效时,draw
/ ViewGroup
都不再被调用。
我检查了View.java
的{{1}}源代码,并看到很多逻辑来操作View Flags来添加或删除与WillNotDraw相关的内部标志(但所有方法都是私有的) 。我怀疑这是发生了什么:调用setBackgroundDrawable
设置了willNotDraw标志,但是我无法再次启用它。
后续调用
setBackgroundDrawable(null)
被忽略。
为了让事情变得更有趣,如果我没有在XML中分配任何背景,那么setBackgroundDrawable(null)调用似乎没有触及标志,所以我没有这个问题。
会发生什么?
这是泼水画:
setWillNotDraw(false)
答案 0 :(得分:1)
尝试重写dispatchDraw(Canvas)方法