android如何获取view宽高

avatar
作者
筋斗云
阅读量:0

在Android中,获取View的宽高需要在View布局完成后进行。可以通过以下方法获取View的宽高:

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!