您的位置:首页 > 移动开发 > Android开发

android 的activity中addContentView 和 setContentView 的区别

2013-12-20 18:22 549 查看
activity 中 addContentView 和 setContentView 的区别是什么?

首先看setContentView

逻辑在PhoneWindow 类中

@Override
public void setContentView(int layoutResID) {
if (mContentParent == null) {
installDecor();
} else {
mContentParent.removeAllViews();
}
mLayoutInflater.inflate(layoutResID, mContentParent);
final Callback cb = getCallback();
if (cb != null && !isDestroyed()) {
cb.onContentChanged();
}
}


如果多次调用setContentView ,则之后每次都会清空 mContentParent 容器。然后组装资源layoutResID。

addContentView

逻辑也在PhoneWindow 类中

@Override
public void addContentView(View view, ViewGroup.LayoutParams params) {
if (mContentParent == null) {
installDecor();
}
mContentParent.addView(view, params);
final Callback cb = getCallback();
if (cb != null && !isDestroyed()) {
cb.onContentChanged();
}
}


如果多次调用addContentView ,则之后每次都会将view添加到mContentParent 容器中。最后产生view 的叠加效果。

结论:

调用 setContentView 。设置时会清空容器再添加 view。无view叠加效果

调用addContentView 。直接添加到view容器中,有view叠加效果。addView的字面意思“添加view”也很贴切。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: