所以我有一个视图是通过Xml充气的。这种观点有一个子视图,这是我需要设置一个marginTop像这样一个动态值:在运行时更改视图属性的正确方法
toolbar.getHeight() - 100
出于这个原因,我不能将其设置为XML。我可以这样做:
?attr/actionBarSize
,但我需要特别toolbar.getHeight() - 100
什么是实现这一目标的正确方法?我在活动的onCreate中做了这件事,我为该视图设置了一个viewTreeObserver.addOnGlobalLayoutListener
,获取layoutParameters并添加了一个边距。
这是正确的方法吗?我看到它的方式,绘制视图,当我在该视图的viewTreeObserver中运行一些代码时,视图必须重新绘制。没有设置自定义视图,有没有办法避免这种双渲染?
如果工具栏的高度是固定的大小,你可以看看了'getResources(),其大小getDimensionPixelSize( ...)'并立即设置边距,而不是等待布局合格。 – Karakuri
它不是。它的attr?actionBarSize –
你可以在'onCreate()'中看到'obtainStyledAttributes()'。这是一个固定的大小,对于不同的配置它只是一个不同的固定大小。 – Karakuri