我正在使用自定义视图来绘制滑块(带有两个手柄(。
自定义视图正在扩展约束布局,我在构造函数中设置 setWillNotDraw((,一切正常 - 直到包含自定义视图的片段停止并重新启动。从这一刻起,onDraw 方法在调用 invalidate(( 后不再执行。在调试期间,我检查了willNotDraw-Flag,它仍然设置为false。
- 我正在使用 kotlinx
- 我在初始化块中调用setWillNotDraw(false(
- 我测试了一下,如果包含片段被创建两次,但那里的一切看起来都很正常。
- 我保证,调用了 invalidate((。
- 我保证,willNotDraw((设置为假。
- 自定义视图将添加到布局中的片段中.xml
onCreate
,onCreateView
,片段的onViewCreated
只被调用一次
自定义视图中的初始化块:
init {
View.inflate(context, R.layout.layout_slider, this)
setWillNotDraw(false)
}
自定义视图中的onDraw 函数:
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
Timber.d("onDraw")
}
停止并启动包含片段后,onDraw
不再输出,而其他一切正常。
当我写我的问题时,我到处打电话给invalidate()
,我想重新绘制视图。
我将初始化块更改为
init {
view = inflate(context, R.layout.layout_slider, this)
setWillNotDraw(false)
}
并使用view?.invalidate()
而不是invalidate()
.
现在一切正常,尽管我不知道为什么它会有所作为。