androidでレンダリング後のViewのサイズを取得する
onClickなどのユーザイベント実行時に取得するならば以下の方法で取得ができる。
mView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
int width = v.getWidth();
int height = v.getHeight();
}
});
これを利用して以下のようにすると正しく取得できない。
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
int width = mView.getWidth();// 0
int height = mView.getHeight();// 0
}
onCreate, onStart, onResumeではレンダリングが終了していないためサイズが0となる。
■解決策
以下のようにViewTreeObserverを利用することでレンダリング後のサイズを取得することができる。
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
ViewTreeObserver viewTreeObserver = mView.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int width = mView.getWidth();
int height = mView.getHeight();
}
});
}
TrackBack URL :
Comments (0)
コメントはまだありません»
コメントはまだありません。
この投稿へのコメントの RSS フィード。TrackBack URL
コメントする