在我的onCreateView()
课程的Fragment
我创建并返回View
,其内容需要根据{{1}的实际屏幕宽度和高度动态创建}。
如果我能够确定Fragment
内的宽度和高度,那将是最理想的。这是因为在onCreateView()
内构建View
时,会向其中添加许多子onCreateView()
,以及父布局View
如何根据可用内容将这些子项组织到列中宽度和高度(创建一种'流体'列容器)。
我尝试查看传递给View
的{{1}}中包含的LayoutParams
,但宽度和高度似乎是常量,而不是特定的宽度和高度。
我是否正确地相信,在布局阶段的这个阶段(ViewGroup
'onCreateView()
内),没有宽度和高度可用?如果是这种情况,那么我怀疑我需要做的是分两个阶段构建我的容器Fragment
:(1)最初将子项添加到它,然后(2)实际组织这些子{{1}在宽度和高度已知的点处调用的方法的覆盖内的列。
答案 0 :(得分:1)
是的,你是对的。在片段onCreateView()
中,宽度和高度尚不可用(均为0)。完全按照你在2个阶段所说的那样做是不需要的。我想你可以用两种方式做到这一点:
没有自定义视图:您可以在片段中使用ViewTreeObserver
来确定何时计算宽度和高度,然后计算子视图的大小并添加它们。
使用自定义视图:您可以按照自己的提及构建自定义视图,并在onDraw()
中添加子视图。在onDraw()
方法中,宽度和高度已经计算过。