在活动生命周期中,是否有可用于测量的UI元素?
答
每里奇的要求:
您可以决定当宽度和高度使用GlobalLayoutListener
像这样:
final View myView = findViewById(R.id.id_of_view);
ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int viewHeight = myView.getHeight();
int viewWidth = myView.getWidth();
// Do what you want with the width and height
ViewTreeObserver obs = myView.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
}
});
答
通过setContentView()
方法设置好您的活动内容后,您就可以从我的窗口小部件(尺寸,文本和其他)中获取信息。
答
如果你想深入了解widget已经被放置的位置,你必须扩展你想要监视的每个widget。 然后重写的onDraw方法和捕获如果这一观点已经绘一次
private boolean imVisible=false;
public boolean imVisible() {
return imVisible;
}
@Override
protected void onDraw(Canvas canvas) {
if(!imVisible){
imVisible=true;
}
super.onDraw(canvas);
}
然后你就可以循环到感兴趣的部件做了,你知道他们是在他们与dimentions位置绘制。
更好的解决方案是onDraw在第一次触发一个绘制的侦听器时被调用。您必须设置一组监听小部件进度的监听器。这就是最后一个小部件在屏幕上的确切时刻......你知道它。
就出在这里,你寻找答案。 http://stackoverflow.com/questions/4142090/how-do-you-to-retrieve-dimensions-of-a-view-getheight-and-getwidth-always-r – DeeV 2012-03-09 19:51:15
@Deev把这作为答案,我'将其标记为已接受。这是我寻找的解决方案,它的工作 – Rich 2012-03-10 01:34:09
好的,完成了。我扩展了一下,所以这是一个“答案”。 – DeeV 2012-03-12 14:25:30