setContentView如何构建布局

本文探讨了在Android应用开发中,setContentView()方法如何构建布局。通过源码分析,揭示了DecorView作为Window的顶层View,以及Activity中setContentView()如何通过PhoneWindow和安装Decor来设置内容视图。同时,介绍了获取特定布局对象的多种方法,并讨论了不同主题设置对视图结构的影响。
摘要由CSDN通过智能技术生成

我们在写安卓应用程序的时候经常要写这一句:

setContentView(R.layout.activity_main);

这一句代表的含义就是将这个Activity的布局设置成指定资源文件,那么我们所看的界面是如何构建的呢?这就要从源码中去分析.

DecorView

DecorView是Window的一个内部类,Window是抽象类,在整个源码中源码中Window只有一个实现类:PhoneWindow,这个类才是activity对应的实际的Window,这个类里面有一个DecorView的引用:

// This is the top-level view of the window, containing the window decor.
    private DecorView mDecor;

google工程师为这个变量添加了一段注释,很显然这段解释说明DecroView是window的顶层view视图,也就是Activity里面所有View的根结点,那么我们就从Activity的setContentView方法看看,setContentView这个方法是如何构建整个View的。
Activity里面setContentView的定义:

public void setContentView(int layoutResID) {
        getWindow().setContentView(layoutResID);
        initActionBar();
    }

首先获取和Activity关联的Window,上面已经说了Window实例是PhoneWindow对象,然后通过PhoneWindow对象调用setCon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值