安卓動態獲取及更改view的長寬

最基礎的問題,你知道嗎?

動態獲取:熟悉安卓View繪製流程的同學知道,在onCreate階段是不能獲取到View的長寬的,因爲還沒有進行繪製,只有當View顯示到前臺的時候纔會進行繪製。恩,就是這樣。所以我們直接在onCreate中getWidth()是不能獲取到的。那怎麼辦呢?我們要用到監聽View繪製的類——ViewTreeObserver,你只需要獲取View的ViewTreeObserver,然後設置一個監聽器,在實現的方法中獲取長寬,等待回調。

    @Override
    public boolean onPreDraw() {
        height = showPicture.getMeasuredHeight();

        return true;
    }
這就是一個簡單的獲取方式。

那麼如何動態修改呢?這就要依賴於ViewGroup了,這裏不做過多解釋,可以去看看ViewGroup的源碼,以及大神的分析。

首先我們得知道view的parent ViewGroup是什麼,假如是LinearLayout。於是我們需要:

LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams();
然後就可以對params中的參數進行修改,然後view.setLayoutParams()。

最基礎的你懂了嗎?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章