我想以编程方式向布局添加一些图形。我想根据 xml 布局文件
中其他图形元素的位置动态定位图形。
如果我尝试在 onCreateView
或 onViewCreated
中访问它们,布局中图形的位置均为 0。这可能是因为布局尚未完成膨胀。
我在哪里可以连接我的代码以确保 fragment 的布局已完成膨胀?
目前我已经使用 viewTreeObserver
解决了这个问题(见下面的代码),但这真的是最聪明的方法吗?
我在 fragment 中工作。
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;
}
最佳答案
onCreateView 使 Fragment
的布局膨胀。您只能在 onCreateView 返回后才能找到 View 。
我会使用 onActivityCreated()
方法来查找 View ,然后更新/定位它们。
可能有一个完全不同的解决方案,我刚开始使用 Android
关于Android fragment 布局完成膨胀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16419996/