zoukankan      html  css  js  c++  java
  • Android下在onCreate中获取控件的宽度和高度(通过回调)

    有时候需要在onCreate方法中知道某个View组件的宽度和高度等信息,

    而直接调用View组件的getWidth()、getHeight()、getMeasuredWidth()、getMeasuredHeight()、getTop()、getLeft()等方法是无法获取到真实值的,只会得到0。

    这是因为View组件布局要在onResume回调后完成。

    下面提供实现方法:

    第一种:

    onGlobalLayout回调会在布局完成时自动调用

    img1.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                boolean isFirst = true;// 默认调用两次,这里只让它执行一次回调
    
                @Override
                public void onGlobalLayout() {
                    if (isFirst) {
                        isFirst = false;
                        // 现在布局全部完成,可以获取到任何View组件的宽度、高度、左边、右边等信息
                        rsBlur2(bitmap, img1);
                    }
                }
            });

    第二种:

    addOnPreDrawListener

    vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {  
            public boolean onPreDraw() {  
                int height = imageView.getMeasuredHeight();  
                int width = imageView.getMeasuredWidth();  
                textView.append("
    "+height+","+width);  
                return true;  
            }  
        });

    第三种:

    view.post方法

    img1.post(new Runnable() {
                @Override
                public void run() {
                    System.out.println("img1.getWidth()------>" + img1.getWidth());
                }
            });

    其他方法和分析可以参考该文:

    http://blog.csdn.net/johnny901114/article/details/7839512

  • 相关阅读:
    playbook配置不同系统版本的yum源配置
    playbook部署lamp
    lamp分离部署
    容器的介绍
    ansible 角色的使用
    playbook配置不同系统版本的yum源配置
    Ansible playbook 部署lamp
    Lamp 分离部署
    Ansible常用模块
    Ansible部署
  • 原文地址:https://www.cnblogs.com/hsx514/p/3830198.html
Copyright © 2011-2022 走看看