zoukankan      html  css  js  c++  java
  • Android开发 获取View的尺寸的2个方法

    前言

      总所周知,在activity启动的onCreate或者其他生命周期里去获取View的尺寸是错误的,因为很有可能View并没有初始化测量绘制完成.你这个时候获取的宽或的高不出意外就是0.所以,我们需要等待View的绘制完成后再来测量

    第一种方法,将测量添加到View列队里

    mTextView.post(new Runnable() {
                @Override
                public void run() {
                    int w = mTextView.getWidth();
                    int h = mTextView.getHeight();
                    
                }
            });

    这个方式在TextView初始化全部完成后会执行这个消息列队里的逻辑

    第二种方法,监听View的测绘完成

    mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener(
        new OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {                                                        
                mHeaderViewHeight = mHeaderView.getHeight();
                mHeaderView.getViewTreeObserver()
                        .removeGlobalOnLayoutListener(this);
            }
    });

    但是需要注意的是OnGlobalLayoutListener可能会被多次触发,因此在得到了高度之后,要将OnGlobalLayoutListener注销掉。另外mHeaderViewHeight和mHeaderView都需要写在当前java文件类(比如Activity)的成员变量中。

  • 相关阅读:
    MyBatis 3源码分析
    Java动态代理
    HashMap原理分析(JDK1.7.x之前)
    JQuery datepicker 用法
    百度一键分享功能
    JQuery BlockUI插件
    AJAX参数详解
    ECharts图标库
    KeCode对照表(键盘按键的获取)
    常见浏览器兼容问题
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/11060490.html
Copyright © 2011-2022 走看看