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

  • 相关阅读:
    java -jar 远程调试
    正则
    python2和3的区别
    javaw 运行jar 指定编码
    windows kill 结束指定端口进程
    linux 查看nginx 安装目录
    node-mysql中防止SQL注入
    实用资源库和工具,极大缩减开发时间
    浏览器地址栏运行JavaScript代码
    css垂直居中方案
  • 原文地址:https://www.cnblogs.com/hsx514/p/3830198.html
Copyright © 2011-2022 走看看