在Android中,獲取View的寬高需要在View布局完成后進行。可以通過以下方法獲取View的寬高:
ViewTreeObserver
:在View創建完成后,可以使用ViewTreeObserver
來監聽View的布局變化。當View的寬高發生變化時,會回調OnGlobalLayoutListener
接口。這時可以獲取到View的寬高。
示例代碼:
final View view = findViewById(R.id.your_view);
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// 獲取View的寬高
int width = view.getWidth();
int height = view.getHeight();
// 執行你需要的操作
// 移除監聽器,避免重復回調
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
});
View.post()
方法:可以使用View.post()
方法將一個Runnable對象加入到View的消息隊列中。當View的寬高已經確定時,Runnable對象會被執行。
示例代碼:
final View view = findViewById(R.id.your_view);
view.post(new Runnable() {
@Override
public void run() {
// 獲取View的寬高
int width = view.getWidth();
int height = view.getHeight();
// 執行你需要的操作
}
});
請注意,這兩種方法都需要在View布局完成后才能獲取到正確的寬高。因此,務必在合適的時機調用這些方法。