不知道原出处,所以只能表明转载处了:http://blog.csdn.net/sunny2come/article/details/8899138,顺便增加了个RobotiumViewer的截图以方便理解。

摘要一、DecorView为整个Window界面的最顶层View。 二、DecorView只有一个子元素为LinearLayout。代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域。 三、LinearLayout里有两个FrameLayout子元素。 (20)为标题栏显示界面。只有一个TextView显示应用


(请发邮件到freeget.one@gmail.com获得最新翻强软件。)

一、DecorView为整个Window界面的最顶层View。

二、DecorView只有一个子元素为LinearLayout。代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域。

三、LinearLayout里有两个FrameLayout子元素。

(20)为标题栏显示界面。只有一个TextView显示应用的名称。也可以自定义标题栏,载入后的自定义标题栏View将加入FrameLayout中。

(21)为内容栏显示界面。就是setContentView()方法载入的布局界面,加入其中。

工具查看:

1.

下图为SDK中tools文件夹下hierarchyviewer bat 查看ViewTree的结果:

(此时未替换标题栏)

2.替换标题栏后ViewTree的变化:

绿色区域发生了变化,改变为了载入的title.xml文件的布局。

title.xml内容为:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version= "1.0" encoding= "utf-8" ?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "fill_parent" android:layout_height= "fill_parent" > <ImageView android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:src= "@drawable/icon2" /> <TextView android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:id= "@+id/title_tv" android:textColor= "#FFFFFF" android:textStyle= "bold" android:text= "@string/app_name" /> </LinearLayout>


通知栏绘制在1号LinearLayout中,还是绘制在DecorView中还有待探究。

-----------------

ApiDemo中app包下CustomTitle中自定义TitleBar代码段

1 2 3 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.custom_title); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);


载入自定义titleBar后如何查找其中元素呢,其实还是findViewById就可以了,因为载入的自定义布局已经在DecorView树中了

而findViewById是怎么回事呢。

activity中findViewById源码

1 2 3 public View findViewById(int id) { return getWindow().findViewById(id); }


调用了getWindow().findViewById,getWindow返回的是Window点入查看window中源码

1 2 3 public View findViewById(int id) { return getDecorView().findViewById(id); }


所以最终是从DecorView最顶层开始搜索的


更多相关文章

  1. openCv CameraBridgeViewBase 竖屏显示对应的修改
  2. android 实现GridView多选效果
  3. [置顶] 让你的Android应用与外部元素互动起来
  4. Android中Gallery显示手机中的图片
  5. 创建一个简单的android工程的步骤
  6. 一起学android之自定义控件一起制作自定义标签(39)
  7. DiscreteSeekBar使用简介,一个带气泡的SeekBar
  8. Android(安卓)DatePickerDialog 只显示年月
  9. android drawText/drawLines不显示的原因

随机推荐

  1. android 环境安装、helloworld demo 创建
  2. Android新手入门 FAQ
  3. Android学习札记13:为什么更推荐使用Parce
  4. 在 Android 上使用协程(三) :Real Work
  5. Android网络游戏之神农诀项目开发--视频
  6. 《Android和PHP开发最佳实践》迷你书
  7. Android NDK入门实例 计算斐波那契数列一
  8. Android换肤的两种思路
  9. android利用JNI调用C++自定义类
  10. 利用HTML5开发Android笔记