所以我有一個視圖是通過Xml充氣的。這種觀點有一個子視圖,這是我需要設置一個marginTop像這樣一個動態值:在運行時更改視圖屬性的正確方法
toolbar.getHeight() - 100
出於這個原因,我不能將其設置爲XML。我可以這樣做:
?attr/actionBarSize
,但我需要特別toolbar.getHeight() - 100
什麼是實現這一目標的正確方法?我在活動的onCreate中做了這件事,我爲該視圖設置了一個viewTreeObserver.addOnGlobalLayoutListener
,獲取layoutParameters並添加了一個邊距。
這是正確的方法嗎?我看到它的方式,繪製視圖,當我在該視圖的viewTreeObserver中運行一些代碼時,視圖必須重新繪製。沒有設置自定義視圖,有沒有辦法避免這種雙渲染?
如果工具欄的高度是固定的大小,你可以看看了'getResources(),其大小getDimensionPixelSize( ...)'並立即設置邊距,而不是等待佈局合格。 – Karakuri
它不是。它的attr?actionBarSize –
你可以在'onCreate()'中看到'obtainStyledAttributes()'。這是一個固定的大小,對於不同的配置它只是一個不同的固定大小。 – Karakuri