画面全体とかじゃなく、TextViewやImageViewなど、一部の要素の大きさを取得します。
onCreate()の中で取得しちゃうと0になってしまいます。
これだとwidth=0になる
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lo_main); Button icon_bt = (Button)findViewById(R.id.icon_bt); int width = icon_bt.getWidth(); }
ただしく取得するにはこっちで
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); Button icon_bt = (Button)findViewById(R.id.icon_bt); int width = icon_bt.getWidth(); }
ただ、このonWindowFocusChanged()はライフサイクル的には
onPause()
onCreate()
onStart()
onResume()
onWindowFocusChanged()
onStop()
の順番に呼ばれるので、Viewのサイズによって動的に処理を変更する場合は注意が必要です。
[…] 参考: TextViewやImageViewなど、設置されているViewのサイズを取得したいとき [MainActivity.java] […]