【发布时间】:2013-05-01 11:06:27
【问题描述】:
我想以编程方式将一些图形添加到布局中。我想根据xml layout file 中其他图形元素的位置动态定位图形。
如果我尝试在onCreateView 或onViewCreated 中访问它们,布局中图形的位置都是0。这可能是因为布局还没有完成膨胀。
我可以在哪里连接我的代码以确保片段的布局已完成膨胀?
目前我已经使用viewTreeObserver解决了这个问题(见下面的代码),但这真的是最聪明的方法吗?
我正在片段中工作。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.myfrg, container, false);
mMainLayoutCanvas = (RelativeLayout)v.findViewById(R.id.myfrg_mainlayout);
mMainLayoutCanvas.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
initializeUI();
}
});
return v;
}
【问题讨论】:
-
你的做法是正确的做法,因为像@RubenWeerts 所说的等待 onActivityCreated() 需要更多时间。
-
@Daniel 需要更多时间吗?
-
@MaciejGórski 我认为他的意思是这是正确的地方,因为 onCreateView 旨在绘制片段的用户界面。 onActivityCreated 应该处理检索状态等而不是布局(用户界面)。这需要更多时间,因为在 onActivityCreated 之前调用了 onCreateView。参考链接:developer.android.com/guide/components/fragments.html
标签: android layout dynamic fragment