当前位置: 代码迷 >> Android >> 也问:怎么获得控件大小(高度、宽度等)尺寸信息
  详细解决方案

也问:怎么获得控件大小(高度、宽度等)尺寸信息

热度:87   发布时间:2016-05-01 21:17:45.0
也问:如何获得控件大小(高度、宽度等)尺寸信息?
也问:如何获得控件大小(高度、宽度等)尺寸信息?

在Activity的OnCreate()中,用tv.getWidth()什么的得到的都是0,网上查来查去,大致上说应该是时机不对,onCreate()太早。请问应该在什么地方、什么时候查?

------解决方案--------------------
在onDraw里边肯定,另外在 View.onMeasure、onLayout、或 onSizeChanged,记得调用 super.onXxxx,然后再检查尺寸是否>0了,这些应该也是可以的,你自己测试下看
------解决方案--------------------
获取组件的宽高度为0,是因为组件还没用被正式使用,只有在代码中使用一次以后才能正确获得组件的宽高
------解决方案--------------------
试了一下,在前面几个周期函数里面都获取不到,

然后在事件里面可以获取到,不知道是何缘故,还需进一步探讨:

Java code
@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                text = (TextView) findViewById(R.id.text);                btn = (Button) findViewById(R.id.btn);                btn.setOnClickListener(new Button.OnClickListener(){            @Override            public void onClick(View v) {                int width = text.getWidth();                int height = text.getHeight();                Log.i("Log: ", "----------->"+width + " | " + height);            }        });    }
------解决方案--------------------
来了,看看
------解决方案--------------------
Java code
               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();
  相关解决方案