ビューが表示される前のビューの大きさを測る方法

ビューが画面に表示される前にあらかじめビューの大きさを知っておきたいという場合のビューの計りかたを紹介します。

計りかたはViewクラスのgetMeasuredWidthまたはgetMeasuredHeightメソッドを呼び出すだけですが、このメソッドを呼び出す前にmeasureメソッドを次のように呼び出す必要があります。

View myView = findViewById(R.id.my_view);
myView.measure(
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

measureメソッドはビューがどれほどの大きさを持っているかを調べるときに呼ばれるメソッドで、呼び出し元のビューの親ビューから大きさに関する情報を受け取ることができます。

実際のコードでは次のようにビューの大きさを計ります。

public class MainActivity extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        TextView textView = (TextView)findViewById(R.id.textView);
        textView.measure(
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        int width = textView.getMeasuredWidth(),
            height = textView.getMeasuredHeight();
        Log.i("MainActivity : ", "ビューの幅 = " + width + 
                "  ビューの高さ = " + height);
    }
}

ちなみにgetWidthgetHeightなどのメソッドはビューがアクティビティなどに設置されて見えるようになった後でないと正しい大きさを返してこないので注意が必要です。

関連項目
プライバシーポリシー