一个父 LinearLayout 视图可能有数百个子视图。为了更好的性能,我的解决方案是这样的:likelazy load。
LinearLayout
(可能)数百个子视图与更好的性能相矛盾。我认为您正在寻找的是ListView
一个无尽的适配器(一个简单的谷歌搜索将显示如何实现它,而不是那么困难)。一旦您到达最后加载的元素,此适配器将开始加载视图(在加载新内容时显示加载视图)。
如果您仍想使用LinearLayout
:
如果您只想在LinearLayout
第一次布局时填充屏幕的内容,您可以Runnable
在方法中的一个视图上发布一个onCreate
(如果这是您首先填充的地方LinearLayout
)。在那里Runnable
找到 的高度LinearLayout
并将其与当前存在的孩子的组合高度进行比较。如果组合的子高度小于LinearLayout
高度,则添加更多视图以进行补偿。
如果LinearLayout
在 a 中ScrollView
,并且您想在加载视图可见时添加其他子级,则监视 的滚动,ScrollView
并在加载视图可见时添加新子级。通过检查用户滚动了多少与当前存在的LinearLayout
.
初步反应:
关于您想知道的内容,您的问题有点模棱两可。如果你有一个特定的问题,你应该从那个开始。
例如,顶级 LinearLayout 视图有 300 个子视图。但设备屏幕尺寸仅显示 11 个子视图一次。
请不要让自己陷入这样的场景。如果你的内存用完,那么这个数量的视图会导致性能下降甚至应用程序崩溃(因为所有这些视图都将保存在内存中)。
android如何计算一次可以显示多少个子视图?
如果可用,每个View
和ViewGroup
都有onMeasure
测量自身及其子级的方法。将调用LinearLayout
它的onMeasure
方法,并且在这个方法中它将测量它的孩子(使用 measure method
)给他们一些关于他们应该有多大的建议(LinearLayout
从它的父母那里收到一些关于它应该有多大的建议)。如果您想了解这是如何完成的,请查看LinearLayout
.
视图如何知道它将被绘制?
我不明白你想知道什么。要在屏幕上绘制视图,onDraw
将调用其方法。