我使用自定义视图绘制滑块(带有两个手柄)。
自定义视图正在扩展ConstraintLayout,我在构造函数中设置了setWillNotDraw(),一切正常 - 直到包含自定义视图的片段停止并再次启动。从这一刻开始,在调用invalidate()之后不再执行onDraw方法。在调试过程中,我检查了willNotDraw-Flag并且它仍然设置为false。
onCreate
,onCreateView
,onViewCreated
片段仅被调用一次init block :
init {
View.inflate(context, R.layout.layout_slider, this)
setWillNotDraw(false)
}
自定义视图中的onDraw函数:
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
Timber.d("onDraw")
}
停止并启动包含片段后onDraw
不再输出,而其他一切正常。
答案 0 :(得分:0)
当我写下我的问题时,我到处都叫invalidate()
,我想重新绘制视图。
我将初始化块更改为
init {
view = inflate(context, R.layout.layout_slider, this)
setWillNotDraw(false)
}
并使用view?.invalidate()
代替invalidate()
。
现在一切正常,虽然我不知道它为什么会有所作为?有没有人对此有所了解?