2012-01-20 13 views
1

マイレイアウト機能しません。getTop()/ RelativeLayoutでのXMLファイルのビューのためのgetLeftは

<RelativeLayout...> 
<Button 
    android:id="@+id/button_1" 
    ... 
    /> 
<Button 
    android:id="@+id/button_2" 
    android:layout_toRightOf="@+id/button_1" 
    ... 
    /> 
... 
</RelativeLayout> 

は、私はすべてのボタンのxとyの位置を保存したいです。

私はこれを試してみました:

Button b[] = new Button[40]; 
int parX [] = new int[40]; 
int parY [] = new int[40]; 
String temp; 
int resID; 

for (int i=0;i<=39;i++) 
{ 
temp = "id/button_" + String.valueOf(i+1); 
resID = getResources().getIdentifier("com.myapp.test:"+temp, null, null); 
b[i] = (Button) findViewById(resID); 
parX[i] = b[i].getTop(); 
parY[i] = b[i].getLeft(); 
} 

が、B [i]を.getTop()とb [i]を.getLeft()は常に0 されているが、それは正しくAが描かれているので、それをすることはできませんフィールドには 40個のボタンがありますので、xとyの位置がすべて異なる必要があります。

my xmlファイルのボタンのx/y位置を調べるにはどうすればよいですか?

答えて

3

getLeft/getTopは、最初のレイアウトが通過した後にのみ正しい値を返します。

+1

最初のレイアウトパスはいつ終了しますか? getLeft/getTopをイベントonFinishInflate()、onResume()、onSizeChanged()、onLayout()に移動しましたが、常に0になります。 – KWT

+1

@ user601721 View.getViewTreeObserver()およびViewTreeObserver.OnGlobalLayoutListenerインターフェイスを見てください。これは、レイアウトが通過した後に呼び出されるコールバックです。 –

関連する問題