在Fragment视图中获取组件的宽度和高度

时间:2012-05-02 07:05:44

标签: android

我需要访问Fragment视图中已评估的所有组件的宽度和高度。所以我需要一些通知告诉我,片段布局阶段的视图已经完成。

在活动中我可以使用onWindowFocusChanged(boolean hasFocus)生命周期方法,但片段没有这种方法。

我发现的唯一方法是使用getView().addOnLayoutChangeListener()。但它多次呼叫,只有最后一次呼叫对我有用。

在片段视图中完成布局后如何调用一些更好的方法?

1 个答案:

答案 0 :(得分:1)

您实际上可以手动触发布局传递 - 您只需要使用适当的MeasureSpecs调用View.measure(int,int)。例如,如果要将Fragment附加到父视图parentView,并且您希望它具有相同的大小,则执行以下操作:

View fragmentView = fragment.getView();
fragmentView.measure(MeasureSpec.makeMeasureSpec(parentView.getMeasuredWidth(),
                                                 MeasureSpec.EXACTLY),
                     MeasureSpec.makeMeasureSpec(parentView.getMeasuredHeight(),
                                                 MeasureSpec.EXACTLY));

有关度量/布局如何通过工作的更多信息:http://developer.android.com/reference/android/view/View.html#Layout