gpt4 book ai didi

android - 后台操作后不会再次调用 View 组绘制

转载 作者:行者123 更新时间:2023-11-30 02:59:02 26 4
gpt4 key购买 nike

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

我的问题开始于,在布局 XML 中,在这样的 View 上我分配了一个背景可绘制对象(“启动画面”),后来在应用程序中我删除了这个背景(setBackgroundDrawable(null)) .这只会在应用程序初始化时发生一次。

 <com.regaliz.gui.layouts.FunqRootLayout xmlns:android="..."
.
android:background="@drawable/a_filmnew_cover_play_splash">

从那时起,每当我使 ViewGroup 无效时,都不会再调用 onDraw/draw

我检查了 View.javasetBackgroundDrawable 源代码,看到了很多操作 View Flags 以添加或删除与 WillNotDraw 相关的内部标志的逻辑(但所有方法都是私有(private)的)。我怀疑这是正在发生的事情:对 setBackgroundDrawable(null) 的调用设置了 willNotDraw 标志),但是我无法再次启用它。

后续调用

 setWillNotDraw(false)

被忽略。

为了让事情更有趣,如果我没有在 XML 中分配任何背景,setBackgroundDrawable(null) 调用似乎不会触及标志,所以我没有这个问题。

会发生什么?

这是启动画面:

 <?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) 方法

关于android - 后台操作后不会再次调用 View 组绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22820849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com