自定义View-获取界面的rootview
来源:互联网 发布:党章党规网络测试题 编辑:程序博客网 时间:2024/05/16 15:58
1获取activity or fragment的rootview
1.getRootView
getWindow().getDecorView().getRootView()
findViewById(android.R.id.content).getRootView();
都可以得到 com.android.internal.policy.impl.PhoneWindow$DecorView
2.
getWindow().getDecorView() 得到的是com.android.internal.policy.impl.PhoneWindow$DecorView
findViewById(android.R.id.content) 得到的是 android.support.v7.widget.ContentFrameLayout因为我activity 继承的是 AppCompatActivity,若是我activity直接改成直接继承Activity,则 得到的是android.widget.FrameLayout
3. 例子
ViewGroup viewGroup1 = (ViewGroup) getWindow().getDecorView(); LogIotUtils.e(TAG, viewGroup1 + ""); ViewGroup viewGroup1_root = (ViewGroup) getWindow().getDecorView().getRootView(); LogIotUtils.e(TAG, viewGroup1_root + ""); ViewGroup viewGroup1_child = (ViewGroup) ((ViewGroup) getWindow().getDecorView()).getChildAt(0); LogIotUtils.e(TAG, viewGroup1_child + ""); ViewGroup viewGroup2 = (ViewGroup) findViewById(android.R.id.content); LogIotUtils.e(TAG, viewGroup2 + ""); ViewGroup viewGroup2_root = (ViewGroup) findViewById(android.R.id.content).getRootView(); LogIotUtils.e(TAG, viewGroup2_root + ""); ViewGroup viewGroup2_child = (ViewGroup) ((ViewGroup) findViewById(android.R.id.content).getRootView()).getChildAt(0); LogIotUtils.e(TAG, viewGroup2_child + ""); mLoginsinaIV = (ImageView) findViewById(R.id.login_sina); ViewGroup anyviewRoot = (ViewGroup) mLoginsinaIV.getRootView(); LogIotUtils.e(TAG, anyviewRoot + "");
com.android.internal.policy.impl.PhoneWindow$DecorView{420cd638 V.ED…. R…..ID 0,0-0,0}
com.android.internal.policy.impl.PhoneWindow$DecorView{420cd638 V.ED…. R…..ID 0,0-0,0}
android.widget.LinearLayout{420cf5e8 V.E….. ……I. 0,0-0,0}
android.support.v7.widget.ContentFrameLayout{420db6e8 V.ED…. ……I. 0,0-0,0 #1020002 android:id/content}
com.android.internal.policy.impl.PhoneWindow$DecorView{420cd638 V.ED…. R…..ID 0,0-0,0}
android.widget.LinearLayout{420cf5e8 V.E….. ……I. 0,0-0,0}
com.android.internal.policy.impl.PhoneWindow$DecorView{420cd638 V.ED…. R…..ID 0,0-0,0}
2.Get root view from current activity
根据上面的测试通过如下可以得到我activity的xml的根view。
getWindow().getDecorView()).getChildAt(0);
3. getLocationInWindow 和 getLocationOnScreen
getLocationInWindow
一个控件在其父窗口中的坐标位置
getLocationOnScreen
一个控件在其整个屏幕上的坐标位置
getLocationInWindow是以B为原点的C的坐标,而getLocationOnScreen以A为原点。
参考链接
http://stackoverflow.com/questions/7776768/android-what-is-android-r-id-content-used-for
- 自定义View-获取界面的rootview
- 获得activity的rootview
- activity 获取 rootView 设置 backGroundColor
- 自定义View的界面和行为
- 实现登录界面的自定义view
- 高级界面之自定义View的使用
- 获取View类界面控件的位置
- 自定义View界面大合集
- android 从Activity 获取 rootView 根节点
- android 从Activity 获取 rootView 根节点
- 浅谈自定义View的宽高获取
- 浅谈自定义View的宽高获取
- 浅谈自定义View的宽高获取
- 自定义View的宽高获取
- 自定义View 获取焦点
- Android自定义View-登录界面
- 自定义view实现联系人界面
- 最全的自定义View界面用法汇总--绘制自定义View
- JavaScript鼠标滑过动画效果
- iOS开发之蓝牙4.0技术(详解)
- SAP TableControl 控制单个单元格输入
- 学习Javascript闭包(Closure)
- Python Web 开发学习 - 学习笔记(3)- 解释器
- 自定义View-获取界面的rootview
- hdu 5901(模板,10^11以内的素数个数)
- android 文字或者图片生成.pdf文件
- Linux下修改Mysql数据库存放路径
- Python糗事百科爬虫
- docker api
- sap 提取字符串中汉字
- JS闭包的运用及匿名函数的作用
- laravel 安装及环境配置