在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布局完成后才能获取到正确的宽高。因此,务必在合适的时机调用这些方法。