我正在构建自定义视图,有点像自定义条形图。我正在扩展此LinearLayout
。然后,自定义视图将根据数据填充视图。问题是,每当我希望视图被刷新时,我就会调用removeAllViews()
和类似的方法,因此自定义视图布局处于干净的平台,然后重新填充数据,我调用{ {1}},但儿童观点不会显示出来。我需要调用addView()
的原因是,子视图不会在自定义视图中重复。
这些是我的自定义视图中的一些代码段,我还实现了removeAllViews
,因此每当我显示自定义视图时,我都会获得适当的布局目的。 onLayout()
只是应在此自定义视图中显示的数据的模型类:
BarChartData
好吧,我已经搜索了这个问题,很少有人提出,几乎相同的场景和问题,但我认为他们在removeAllViews之后还没有解决他们关于addView的问题。
答案 0 :(得分:0)
我猜测,当removeAllViews()
调用该函数时,addBarDataToUi()
内部的onLayout()
函数会调用setChartData(BarChartData data)
函数,它会添加子视图它会触发调用onLayout()
的{{1}}函数,并在某种常量循环中删除视图等。 android文档说到
避免在
addBarDataToUi()
或任何相关功能中使用removeAllViews()
http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews()
我假设也可能也包含onLayout()函数。
我最好的建议是在致电onDraw()
removeAllViews()
函数调用移到setChartData(BarChartData data)
函数内部
希望有所帮助