溫馨提示×

android如何獲取view寬高

小億
118
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女