AndroidでViewのサイズを取得する方法
本稿ではViewの高さと幅を取得する方法を説明してきます。
それでは早速次項を見ていきましょう。
onCreateでgetWidth()で幅をgetHeight()で高さを取得すると・・・
下記のように素直にonCreateで
getWidth()とgetHeight()をコールすると幅や高さが0で返ってきます。
0が返ってくる理由としてはViewがActivityに設置される前に幅や高さを取得しているからです。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
Log.d("MainActivity : ", "ボタン幅 = " + button.getWidth());
Log.d("MainActivity : ", "ボタン高さ = " + button.getHeight());
}
ViewTreeObserverを使用してViewが設置された後にビューの幅や高さを取得する
ViewTreeObserverを使用してOnGlobalLayoutListenerの中で
getWidth()とgetHeight()すると正しくViewの幅と高さを取得できます。
public class MainActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = (Button)findViewById(R.id.button);
ViewTreeObserver observer = button.getViewTreeObserver();
observer.addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Log.d("MainActivity : ", "ボタン幅 = " + button.getWidth());
Log.d("MainActivity : ", "ボタン高さ = " + button.getHeight());
}
});
}
}
スポンサーリンク