在Fragment的onCreateView()中确定宽度和高度

时间:2013-07-27 15:22:16

标签: android android-fragments

在我的onCreateView()课程的Fragment我创建并返回View,其内容需要根据{{1}的实际屏幕宽度和高度动态创建}。

如果我能够确定Fragment内的宽度和高度,那将是最理想的。这是因为在onCreateView()内构建View时,会向其中添加许多子onCreateView(),以及父布局View如何根据可用内容将这些子项组织到列中宽度和高度(创建一种'流体'列容器)。

我尝试查看传递给View的{​​{1}}中包含的LayoutParams,但宽度和高度似乎是常量,而不是特定的宽度和高度。

我是否正确地相信,在布局阶段的这个阶段(ViewGroup'onCreateView()内),没有宽度和高度可用?如果是这种情况,那么我怀疑我需要做的是分两个阶段构建我的容器Fragment:(1)最初将子项添加到它,然后(2)实际组织这些子{{1}在宽度和高度已知的点处调用的方法的覆盖内的列。

1 个答案:

答案 0 :(得分:1)

是的,你是对的。在片段onCreateView()中,宽度和高度尚不可用(均为0)。完全按照你在2个阶段所说的那样做是不需要的。我想你可以用两种方式做到这一点:

  1. 没有自定义视图:您可以在片段中使用ViewTreeObserver来确定何时计算宽度和高度,然后计算子视图的大小并添加它们。

  2. 使用自定义视图:您可以按照自己的提及构建自定义视图,并在onDraw()中添加子视图。在onDraw()方法中,宽度和高度已经计算过。

相关问题