自定义视图

时间:2015-06-12 12:59:14

标签: android android-layout android-linearlayout android-custom-view

我正在构建自定义视图,有点像自定义条形图。我正在扩展此LinearLayout。然后,自定义视图将根据数据填充视图。问题是,每当我希望视图被刷新时,我就会调用removeAllViews()和类似的方法,因此自定义视图布局处于干净的平台,然后重新填充数据,我调用{ {1}},但儿童观点不会显示出来。我需要调用addView()的原因是,子视图不会在自定义视图中重复。

这些是我的自定义视图中的一些代码段,我还实现了removeAllViews,因此每当我显示自定义视图时,我都会获得适当的布局目的。 onLayout()只是应在此自定义视图中显示的数据的模型类:

BarChartData

好吧,我已经搜索了这个问题,很少有人提出,几乎相同的场景和问题,但我认为他们在removeAllViews之后还没有解决他们关于addView的问题。

1 个答案:

答案 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)函数内部

希望有所帮助