2013年11月20日水曜日

Androidアプリで動的に生成したViewの幅や高さを取得するには

Viewを動的に生成する場合に、ほかのViewの幅を揃えたい場合などがあると思うが、ViewのgetWidth()はレイアウトが完了してからでないと0を返してくるので、取得したい幅が取得できない。 そこで、ViewTreeObserverのaddOnGlobalLayoutListener()を使って、レイアウト完了後にコールバックを受けて幅を取得する。
// ボタンの高さを幅に合わせる
ViewTreeObserver vto = btnHoge.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        int width = btnHoge.getWidth();
    }
});

0 件のコメント:

コメントを投稿