我需要访问片段视图中所有组件的已评估宽度和高度。所以我需要一些通知告诉我,片段布局阶段的视图已经完成。
在活动中我可以使用onWindowFocusChanged(boolean hasFocus)
生命周期方法,但片段没有这种方法。
我发现的唯一方法是使用getView().addOnLayoutChangeListener()
。但它多次调用,只有最后一次调用对我有用。
在片段视图中完成布局后,是否存在更好的方法来调用一些?
我需要访问片段视图中所有组件的已评估宽度和高度。所以我需要一些通知告诉我,片段布局阶段的视图已经完成。
在活动中我可以使用onWindowFocusChanged(boolean hasFocus)
生命周期方法,但片段没有这种方法。
我发现的唯一方法是使用getView().addOnLayoutChangeListener()
。但它多次调用,只有最后一次调用对我有用。
在片段视图中完成布局后,是否存在更好的方法来调用一些?
您实际上可以手动触发布局传递 - 您只需要View.measure(int,int)
使用适当的 MeasureSpecs 进行调用。例如,如果 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