博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
androidDecorView、自定义title
阅读量:4512 次
发布时间:2019-06-08

本文共 1383 字,大约阅读时间需要 4 分钟。

(友情提示这篇文章很多地方是以web开发类比的,木有web开发经验的童鞋看到了表怪我)大多时候我们看到的手机界面是这样的

大致分为3部分
  1.含有电池的行,就是status bar 是系统提供的状态栏
  2.含通讯录的哪一行,title bar 一般也是系统默认提供给你。
 3.剩余的部分,我们在setContentViewd的时候设置的内容就是这一块。
 
为啥setContentView而不是setRootView,因为我们set的真不是root,整个activity展现给我们的view应该包括界面上看到的所有的控件也就是说包括了statusbar和titlebar,实际上有这么一个root他就是DecorView他是activity的window的根元素结构如下图(本图转自下方参考)
如上图整个window在DecorView里,他的子元素是个linearLayout的view(1),view(1)中包含两个frameLayout(20,21)titlebar在20而我们setContentView的内容在21里面。21这个frameLayout的id就是'content'。
 
 
如何自定义title bar呢,例如上图中那个通讯录右边的加好友按钮是怎么定义的呢?
说到这里就有必要解释一下window对象,activity对象和view对象的关系了,我是web出身,直白的讲
activity对应浏览器的一条进程也就是一个新页面进程。
window对应js的window对象
content(setContentView中的content)对应页面的元素标签(DecorView对应)
setContentView的过程实际上就是
activity.getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main,null))
 
以此类推,摆在我们面前的问题是我们现在没有直接对应标题的标签我们如何操作?
我们可以通过window对象来完成,如下,在onCreate的时候
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);//通知window用户要自定义不用默认的了
setContentView(R.layout.main);//设置我们的布局
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title);//定义title的xml
参考:
http://www.cnblogs.com/beenupper/archive/2012/07/13/2589749.HTML
http://www.cnblogs.com/salam/archive/2010/11/30/1892143.html
http://blog.csdn.net/windskier/article/details/6957854
http://www.cnblogs.com/loulijun/archive/2012/02/09/2344681.html

转载于:https://www.cnblogs.com/SimpleISP/p/5280380.html

你可能感兴趣的文章
cookie
查看>>
如何使用Eclipse编译C,C++,JAVA程序
查看>>
php小程序-文章发布系统
查看>>
使用md5加密的登录密码
查看>>
Java 执行jar linux 实例
查看>>
染色(bzoj 2243)
查看>>
理解托管磁盘的原理与优势
查看>>
[原创]python之简单计算器(超详解,只有基本功能+-*/,还有括号处理)
查看>>
python 多进程简单调用
查看>>
APP压力稳定性测试
查看>>
Windows文件操作基础代码
查看>>
1-8
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_04-集合_04 数据结构_2_数据结构_队列
查看>>
Entity Framework操作Oracle数据库实现主键自增问题
查看>>
Leetcode WC-108-03 931-下降路径最小和
查看>>
从“智猪博弈”看所谓“大国责任”
查看>>
Day3:Spring-JDBC、事务管理
查看>>
模块的四种形式
查看>>
教你如何培养幽默感
查看>>
asp.net的一个简单简历缓存方法
查看>>