• android获取view宽高的几种方法


    在onCreate方法中我们通过mView.getWidth()和mView.getHeight()获取到的view的宽高都是0,那么下面几种方法就可以在onCreate方法中获取到view的宽高。

    1、

            int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
            int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
            mTextView.measure(w, h);
            int height = mTextView.getMeasuredHeight();
            int width = mTextView.getMeasuredWidth();
            System.out.println("measure width=" + width + " height=" + height);

    2、mViewTreeObserver = mTextView.getViewTreeObserver();

            mViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
            {
                @Override
                public void onGlobalLayout()
                {
                    // TODO Auto-generated method stub
                    mTextView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    System.out.println("onGlobalLayout width=" + mTextView.getWidth() + " height=" + mTextView.getHeight());
                }
            });

    3、

            mViewTreeObserver.addOnPreDrawListener(new OnPreDrawListener()
            {
                @Override
                public boolean onPreDraw()
                {
                    // TODO Auto-generated method stub
                    mTextView.getViewTreeObserver().removeOnPreDrawListener(this);
                    System.out.println("onPreDraw width=" + mTextView.getWidth() + " height=" + mTextView.getHeight());
                    return true;
                }
            });

    4、

        @Override
        public void onWindowFocusChanged(boolean hasFocus)
        {
            // TODO Auto-generated method stub
            super.onWindowFocusChanged(hasFocus);
            if (hasFocus)
            {
                System.out.println("onWindowFocusChanged width=" + mTextView.getWidth() + " height=" + mTextView.getHeight());
            }
        }

    打印结果:

  • 相关阅读:
    【1】maven来管理我的SSM项目
    mybatis从数据库中取到的date格式不是yyyy-MM-dd HH:mm:ss
    hadoop的webUI查看Live Nodes为1
    CentOS6.8系统下,ecipse下进行编辑操作,意外退出
    【5】namenode启动过程
    电脑意外重启,导致虚拟机启动失败
    第3章 路由和数据传递
    第2章 基于三层架构搭建MVC系统
    第1章 进入ASP.NET MVC世界
    第13章 集合
  • 原文地址:https://www.cnblogs.com/yushilong/p/3924741.html
Copyright © 2020-2023  润新知