Android - 总结Activity与Fragment打开的时候获取组件的大小
2015-04-10 17:13
996 查看
Activity中获取 组件大小
代码:@Override public void onWindowFocusChanged(boolean hasFocus) { // TODO Auto-generated method stub super.onWindowFocusChanged(hasFocus); Log.d("TAG", "A-button1-->"+button1); Log.d("TAG", "A-width-->"+button1.getWidth()); }方法:在Activity中重写 onWindowFocusChanged()方法,然后直接在方法里面获取view的大小 解释:重写view中的onMeasure()方法可以知道,这个方法是用来计算view的宽度和高度,所以只要重写onMeasure()以 后的方法,然后再那个方法里面获取view的大小就行了。通过测试,一个Activity中,各种方法调用顺序如下:其调用顺序为Activity.oncreate()→Activity.onResume()→→TestImageView.onMeasure()→TestImageView.onLayout()→onGlobalLayoutListener()→→Activity.onWidnowFocusChanged()→.....→→TextImageView.onDraw()引用自:http://www.xuebuyuan.com/1587193.html
fragment 中获取组件大小
代码:Button button1; private int width ; private Handler mHandler; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mView = inflater.inflate(R.layout.activity_one, null); mHandler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if(msg.what == 200){ width = msg.arg1; Log.i("TAG", "button1-->"+button1); Log.i("TAG", "width-->"+width); } } }; return mView; } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); initWidget(); ViewTreeObserver vto = button1.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { width = button1.getWidth(); Message msg = new Message(); msg.what = 200; msg.arg1 = width; mHandler.sendMessage(msg); } }); }解释:因为在Fragment中没有onWidnowFocusChanged()这样的方法来重写,所以我们只能找别的方式,根据上面的方法调用顺序,可以看到vto.addOnGlobalLayoutListener()这个也在onMeasure()之后,OnGlobalLayoutListener 是ViewTreeObserver的内部类,当一个视图树的布局发生改变时,可以被ViewTreeObserver监听到,当界面显示的时候,这个方法也会被调用,所以获取view的大小可以放在这个方法里面引用自:http://bbs.csdn.net/topics/390672372
相关文章推荐
- Android的Activity获取fragment和fragment的组件
- 在一个组件中调用其他组件的内容||android中怎样在activity中获取fragment中的控件
- Android(Activity/Fragment)获取控件的大小
- Android 关于activity嵌套fragment的时候onactivityresult方法不执行的总结
- Android(Activity/Fragment)获取控件的大小
- Android(Activity/Fragment)获取控件的大小
- (大总结)从寻找fragment静态导入activity总是失败的解决方法中了解android应用的系统启动过程
- 认识 Android 中的 Activity 组件 总结
- Android 技术总结(014)—— 获取与转转文件的大小(B,KB,MB,GB)
- Activity与Fragment数据传递之Fragment从Activity获取数据 分类: Android 2015-07-01 14:12 17人阅读 评论(0) 收藏
- Android Activity和Fragment如何获取控件的高度和宽度
- android 获取组件尺寸大小
- Android中fragment_main.xml文件中的组件获取的问题
- Android Activity 无法获取组件尺寸
- android 获取组件尺寸大小
- Activity与Fragment数据传递之Fragment之间获取数据 分类: Android 2015-07-02 10:33 11人阅读 评论(0) 收藏
- Android基础总结2 ---- Fragment与Activity
- [Android] 直接获取组件的宽高:Activity.onWindowFocusChanged()
- fragment 中打开摄像头回调的时候,数据总是被 activity 的 onactivityresult 截获
- Android EventBus 简化应用程序组件(Activity、Fragment、线程)间通信的开源项目