【Android】Buttonの幅・高さを取得したら0が返却される時の対処方法

今回は Android アプリで、ボタン等の表示されている要素の幅と高さを取得する方法についてです。
最初、.getWindow().getHeight() を使って取得しようとしたのですが、どちらも 0 が返却されてしまいました…。

参考にさせていただいた記事はこちらです。

android – How to get height and width of Button – Stack Overflow
https://stackoverflow.com/questions/7750102/how-to-get-height-and-width-of-button

 

こちらの記事によると、.getWindow().getHeight() を使用するのは間違いではないのですが、実行タイミングが早すぎることが原因とのことでした。
そのため、onWindowFocusChanged 関数をオーバーライドして、この中で要素の幅・高さの取得を行えばOKです。

サンプルコードは下記のとおりです。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    // 要素の幅・高さを .getWindow()、.getHeight() を使って取得する
    Button button = findViewById(R.id.button);
    int width = button.getWidth();
    int height = button.getHeight();
}

上記を実行したところ、今度は正常にボタンの幅と高さが取得できました!

 

以上、Android で Button などの要素の幅・高さを取得する方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG