Android获取控件大小的方法

在Android开发中,获取控件的尺寸是至关重要的,例如在计算 GridView 布局时。由于控件尺寸在measure过程后才能确定,因此不能在onCreate()等方法中直接获取。本文介绍了两种获取尺寸的方法:1) 在measure方法之后,可以使用onWindowFocusChanged()、ViewTreeObserver的OnGlobalLayoutListener或post()方法;2) 在measure方法之前,可以通过手动measure,但需要考虑match_parent、固定大小和wrap_content的不同情况。
摘要由CSDN通过智能技术生成
在Android中很多时候都需要获取到控件的大小,这样对于布局的计算有许多的帮助,比如一个GridView布置成多少行多少列是需要提前知道自己允许的最大的高度和宽度才能计算,这样就需要得到控件的大小。控件的大小是在View的measure的过程计算出来的。所有我们如果通过直接在onCreate()、onResume()等等方法中直接去取控件的大小是取不到的。而这里面的原因是View的measure过程和Activity的生命周期是不同步的,也就是说无法保证Activity中的onCreate()等等执行的时候View的measure()已经执行了,如果此时还没有执行肯定是得不到值的。
那么到底有没有得到控件大小的方法,答案肯定是有的。实现的方法分为两大类:
1.View在执行measure()方法之后
     这是很好理解的部分,等到View已经measure()了,我们当然能很方便的得到View的大小。
     (1)Activity中的View.Callback中的onWindowFocusChanged(),在Activity中实现这个方法就可以获取到空间的大小了。(PS:该方法会在Activity每次执行onResume()或者onPause()都执行)
public void onWindowFocusChanged(boolean hasFocus){
    if(hasFocus){
        int height = view.getHeight();
        int width = view.getWidth();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值