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