最近在看android开发framkwork的教程。开发了个类似jquery那样链式调用的导航条。它的使用方式是这样的
- DefaultNavigationBar defaultNavigationBar=new DefaultNavigationBar.Builder(this,findViewById(R.id.view_group))
- .setTitle("标题")
- .setRightTitle("右边")
- .setRightOnclickLister(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Toast.makeText(context,"点击右侧文字",Toast.LENGTH_LONG).show();
- }
- })
- .builder();
R.id.view_group这个是acitivty xml布局里面最外层的标签。我就在考虑个问题,能不能把这俩部分的功能移除。
可是这我也不知道咋搞啊,那百度吧,谷歌吧,
结果搜到了以下三个结果
第一个和第二个的关系还好理解,第二个就是获取第一个的第一个字节点嘛
带着这个疑问,又去谷歌和百度。。。面向搜索引擎编程haha~~
先说结论:
android.R.id.content是个帧布局,能够直接往我们的android.R.id.content
主布局添加东西了啊。
acitivity里面的setContentView()就就是往这里面塞东西
findViewById(android.R.id.content)).getChildAt(0) 得到的就是我们acitivity对应layout布局里面的最外层元素
话题有点偏了,第一个和第三个到底什么关系?也是包含的关系?
没错~
getDecorView:这个方法是获取顶级视图,DecorView为整个Window界面的最顶层View, 里面是包含了我们的android.R.id.content的,而且也是个帧布局哦。我们甚至也能addView。
本来我还想贴下android源码的,无奈AppCompatActivity的源码已经不像17年时候那个版本的那么简洁了,为了兼容加了好多我看不懂的东西。那就贴下别人的笔记吧。
接下来的节目交给?!!!!
一定要看一下,虽然是老代码,但是思路很清晰,还一步步的解答。例如导航条和acitivity的布局的关系,也说的很清楚
What is DecorView and android.R.id.content? - 简书
突然遇到我心心念念的PopupWindow,临时记录一下
https://www.runoob.com/w3cnote/android-tutorial-popupwindow.html
为啥这个jpg可以动呢?知道的童鞋,告诉我下,实在是不懂