【发布时间】:2016-08-19 00:00:48
【问题描述】:
所以我有一个通过 Xml 膨胀的视图。该视图有一个子视图,我需要使用这样的动态值设置一个marginTop:
toolbar.getHeight() - 100
因此,我无法将其设置为 xml。我可以这样做:
?attr/actionBarSize
但我特别需要toolbar.getHeight() - 100
实现此目的的正确方法是什么?我在活动的 onCreate 中执行此操作,我为该视图设置了 viewTreeObserver.addOnGlobalLayoutListener,获取 layoutParameters 并添加边距。
这是正确的方法吗?我看到它的方式是绘制视图,当我在该视图的 viewTreeObserver 中运行一些代码时,必须再次重绘视图。有没有办法在不设置自定义视图的情况下避免这种双重渲染?
【问题讨论】:
-
如果工具栏高度是固定大小,您可以使用
getResources().getDimensionPixelSize(...)查找该大小并立即设置边距,而不是等待布局通过。 -
不是。它的吸引力?actionBarSize
-
您可以在
onCreate()中查找obtainStyledAttributes()。这是一个固定尺寸,只是不同配置的不同固定尺寸。
标签: android view layoutparams