我在获得视图的高度时遇到了一些困难。目前,在应用程序冷启动时,getMeasuredHeight()
视图返回0
.
现在,我知道解决这个问题的方法。发生这种情况是因为尚未布置视图。不幸的是,使用类似 a 是addOnGlobalLayoutListener
不够的。我需要此视图的高度(工具栏 +TabLayout
或只是一个工具栏,具体取决于用户的设置)来设置SwipeRefreshLayout
using的偏移量setProgressCircleOffset()
。在应用程序冷启动时,SwipeRefreshLayout
显示为“刷新”。每当数据加载或更改时,它都会显示为“刷新”。如果我不知道高度,则SwipeRefreshLayout
不会显示它“令人耳目一新”。我不能延迟计算,因为我在冷启动开始时需要它;更不用说它可能是两个可能的高度之一。
所以我的问题是:因为我们可以获得设备的 DPI,并且我通常可以(通过反复试验)估计dp
视图的高度(in )(并且它是备用的)——是否可以创建一个“公式" 或者会根据屏幕尺寸调整偏移量的东西?我知道我需要将 转换dp
为px
,但除此之外,我不确定如何去做。
例如,我知道这个视图的高度在我的 Nexus 6 上是 334px(设置为 513dpi);但在我的库存 Pixel C 上肯定更少(Pixel C 上 334px 的偏移量太大了)。