在背景操作后不再调用Viewgroup绘制

时间:2014-04-02 19:11:57

标签: android android-custom-view ondraw viewgroup

我有一个自定义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)

1 个答案:

答案 0 :(得分:1)

尝试重写dispatchDraw(Canvas)方法