对android setContentView()的认识

泡在网上的日子 / 文 发表于2013-07-11 00:06 次阅读

原文:http://yxwang0615.iteye.com/blog/1326110 

setContentView(int)

用在初始化Activity的oncreate()中,作用是给页面指定布局文件资源


setContentView(View view)

Android如何绘制视图:

当Activity获得焦点时,其就会被要求绘制其布局,android框架会处理具体的绘制功能,但是其布局的继承关系的根节点必须由Activity提供。绘制的时候从模板的根节点开始,计算和绘制布局树。绘制动作会遍历布局节点树,然后渲染每个节点视图,每个父节点有责任绘相邻的子节点。

从以上描述可以看出,这个方法的作用是提供布局继承关系的根节点


example:

private LinearLayout mLinearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    mLinearLayout = new LinearLayout(this);
    mLinearLayout.setBackgroundColor(Color.GRAY);
    mLinearLayout.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    ImageView iv = new ImageView(this);
    iv.setImageResource(R.drawable.icon);
    //设置图片是否超过View的边界
    iv.setAdjustViewBounds(true);
    iv.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.WRAP_CONTENT, Gallery.LayoutParams.WRAP_CONTENT));
    //添加子节点
    mLinearLayout.addView(iv);
    //Both the width and the height of the view are set by default to MATCH_PARENT
    setContentView(mLinearLayout);
}

运行效果是mLinearLayout全屏显示了,因为setContentView(View view)会忽略view的布局参数,代码中设置mLinearLayout.setLayoutParams()是无效的。如果想指定mLinearLayout的布局参数,

可以使用setContentView (View view, ViewGroup.LayoutParams params)方法

setContentView(mLinearLayout, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));


收藏 赞 (0) 踩 (0)
上一篇:Android关于布局、设计的常识【整理】
Android多型号的设备以及形状的诸多因素,让其设计感觉像是一场艰苦的战斗。其神秘的文档使得设计和生产在一开始就显得很难。在网上找有关Android设计的网络资源,你会发现很少有帮助的东西。 幸运的是,Android现在已经开始着手解决有关多种设备和屏幕尺寸
下一篇:android拍照的简单方式:调用已存在的camera应用
如果你的app中有要拍照的需求,有两种方式可以实现,一是直接调用已安装的app,二是自己写一个拍照界面。这篇文章讲解最简单的方式,直接调用已有的camera应用。 获取camera权限 如果你的应用必须要用到拍照的功能,那么你需要在google play上将可以下载该应