zoukankan      html  css  js  c++  java
  • 获取安卓控件的大小

    原文地址:http://blog.sina.com.cn/s/blog_821e2bb101010yin.html


      试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白。

      上代码:

    方法一:

            int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
            int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
            ssidtext.measure(w, h);
            int width =ssidtext.getMeasuredWidth();
            int height =ssidtext.getMeasuredHeight();

    方法二:

            ViewTreeObserver vto = ssidtext.getViewTreeObserver();
            vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
                public boolean onPreDraw() {
                    int height = ssidtext.getMeasuredHeight();
                    int width = ssidtext.getMeasuredWidth();
                    return true;
                }
            });


    另外还搜索到一个方法:
    -----------------------------------------------------------
    先贴到这里。正在做试验。(试验完毕,这种方法得到的控件宽是正确的。

            ViewTreeObserver vto = mArrowUp.getViewTreeObserver(); 

            vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

                @Override 

                public void onGlobalLayout() { 

                   mArrowUp.getViewTreeObserver().removeGlobalOnLayoutListener(this); 

                    Log.e("Width",Integer.toString(mArrowUp.getWidth())); 

                } 

            }); 

    具体用哪一种可以根据需求自己选择

  • 相关阅读:
    Linux平台不同解压缩命令的使用方法
    poj 1274 The Perfact Stall
    Experience Design for Sexable Forum
    JavaScript中的Array对象方法调用
    iOS9适配小结
    [Servlet&JSP] HttpSession会话管理
    Android中的跨进程通信方法实例及特点分析(一):AIDL Service
    OpenCV——PS滤镜算法之Spherize 球面化(凸出效果)
    《Effective Modern C++》翻译--条款4:了解怎样查看推导出的类型
    Android开发系列之ListView
  • 原文地址:https://www.cnblogs.com/runwind/p/4454684.html
Copyright © 2011-2022 走看看