0

メソッドに入力TableLayoutOnCreate(..)ます。テーブルの各列の幅を取得したいと思います。問題は、OnCreate(...)メソッド ビューの幅が 0 に設定されている場合です。テーブルの幅を収集する正しい場所はどこですか?

私も試しOnStart(...)ました(ドキュメント「アクティビティがユーザーに表示されるようになったときに呼び出されます。」から)が、結果は同じでした。

より簡単な例は問題を示しています(上の説明とは異なります):

package xliiv.hello;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class __helloworldActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tv = (Button) findViewById(R.id.button1);
        int width = tv.getWidth();
        //this width will be 0! I expect that textview widths is not 0
        Log.i("tag", "" + width);
    }
4

1 に答える 1

1

でこれを行う必要があります。これによりonWindowFocusChanged()、正確な幅が得られます

これを試して:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);

    int width = findViewById(R.id.button1).getWidth();

    Log.i("tag", "" + width);

}
于 2012-06-13T10:50:00.533 に答える