getRight,getLeft,getTop返回零

时间:2012-08-21 10:06:13

标签: android

我正在使用以下代码。但是所有方法都返回零值。我知道要获取视图的坐标,我们应该绘制视图。这就是为什么我在onResume方法中使用代码但仍然无法正常工作。有什么想法吗?

 @Override
public void onResume(){
    super.onResume();
    System.out.println("Onresume"); 
    System.out.println("tab1 - left" + btn_Tab7 .getLeft());
    System.out.println("tab1 - Top" + btn_Tab7.getTop());
    System.out.println("tab1 - right" + btn_Tab7.getRight());
    System.out.println("tab1 - bottom" + btn_Tab7.getBottom()); 
}

1 个答案:

答案 0 :(得分:8)

onResume中,为时太早,无法调用getLeft,getRight ...... 在onWindowFocusChanged

中执行
@Override
public void onWindowFocusChanged (boolean hasFocus){
    super.onWindowFocusChanged(hasFocus);
    if(hasFocus){
        System.out.println("onWindowFocusChanged"); 
        System.out.println("tab1 - left" + btn_Tab7 .getLeft());
        System.out.println("tab1 - Top" + btn_Tab7.getTop());
        System.out.println("tab1 - right" + btn_Tab7.getRight());
        System.out.println("tab1 - bottom" + btn_Tab7.getBottom());
    }
}

来自onResume的文档:

  

请注意, onResume不是您的最佳指标   活动对用户可见;一个系统窗口,如键盘锁   可能在前面。使用onWindowFocusChanged(boolean)来确定   您的活动对用户可见(例如,恢复   游戏)。