温馨提示×

android如何获取view宽高

小亿
84
2024-09-03 19:05:31
栏目: 编程语言

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

0