10

私は次のコードを使用しています。しかし、すべてのメソッドはゼロ値を返しています。ビューの座標を取得するには、ビューを描画する必要があることを私は知っています。そのため、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()); 
}
4

1 に答える 1

9

getLeft、getRight を呼び出すにonResumeは時期尚早です...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) を使用して、アクティビティがユーザーに表示されていることを確認します (たとえば、ゲームを再開するため)。

于 2012-08-21T10:36:32.503 に答える