Android 在OnCreate的适合获取控件的大小

在onCreate()方法中,通过view.getWidth()和view.getHeight()方法是无法获取控件的宽高的,但是如下两个方法可以;

private void getSize2(View v,String tag){
    int w = View.MeasureSpec.makeMeasureSpec(0,
            View.MeasureSpec.UNSPECIFIED);
    int h = View.MeasureSpec.makeMeasureSpec(0,
            View.MeasureSpec.UNSPECIFIED);
    v.measure(w, h);
    int height = v.getMeasuredHeight();
    int width = v.getMeasuredWidth();
    Log.d(TAG,tag +"的高度为:"+height+";"+tag+"的宽度为:"+width);

}

/**
 * 获取控件大小
 * @param v
 * @param tag
 */
private void getSize(final View v, final String tag) {



    ViewTreeObserver vto = v.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            v.getHeight();
            v.getWidth();
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                v.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            } else {
                v.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
            Log.d(TAG, tag + "的高度为:" + v.getHeight() + ";" + tag + "的宽度为:" + v.getWidth());
        }
    });
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值