Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 背景操纵后,未再次调用视图组绘制_Android_Android Custom View_Ondraw_Viewgroup - Fatal编程技术网

Android 背景操纵后,未再次调用视图组绘制

Android 背景操纵后,未再次调用视图组绘制,android,android-custom-view,ondraw,viewgroup,Android,Android Custom View,Ondraw,Viewgroup,我有一个自定义的ViewGroup,它覆盖draw(),在其子对象上绘制一些内容。它在构造函数上适当地调用setWillNotDraw(false),并且在正常情况下,可以按预期工作 在布局XML中,当我在此类视图上指定背景可绘制(“启动屏幕”)时,我的问题就开始了,然后在应用程序中删除此背景(setBackgroundDrawable(null))。这只在应用程序初始化时发生一次 <com.regaliz.gui.layouts.FunqRootLayout xmlns:android

我有一个自定义的
ViewGroup
,它覆盖
draw()
,在其子对象上绘制一些内容。它在构造函数上适当地调用
setWillNotDraw(false)
,并且在正常情况下,可以按预期工作

在布局XML中,当我在此类视图上指定背景可绘制(“启动屏幕”)时,我的问题就开始了,然后在应用程序中删除此背景(
setBackgroundDrawable(null)
)。这只在应用程序初始化时发生一次

 <com.regaliz.gui.layouts.FunqRootLayout xmlns:android="..."
    .
android:background="@drawable/a_filmnew_cover_play_splash">
都被忽略了

更有趣的是,如果我不在XML中分配任何背景,那么setBackgroundDrawable(null)调用似乎不会触及标志,因此我没有这个问题

会发生什么

这是splash drawable:

 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:gravity="center"
     android:src="@drawable/a_filmnew_cover_play" />


尝试重写dispatchDraw(Canvas)方法

尝试使用dispatchDraw?嗯,你有一点。。。让我检查一下!啊,它起作用了!我认为这是一个安卓错误。您认为覆盖dispatchDraw会有任何性能损失吗?它应该和draw()一样,不是吗?如果您提供此答案,我将接受。dispatchDraw调用其他与绘图相关的方法,因此它是所有绘图内容的母亲是。。我有点担心,如果我是额外的无效的东西,我只是渲染了一吨儿童视图上的几行闪烁的线
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:gravity="center"
     android:src="@drawable/a_filmnew_cover_play" />