【发布时间】:2014-02-02 02:12:45
【问题描述】:
我有一个自定义布局,其中包括主 ListView 上方的进度条。当列表刷新时,我将进度条设置为不确定。在 JellyBean 及更高版本上,这很好用。但是,在 IceCream Sandwich 中,当设置为不确定时,它会在上方跳跃几个像素,足以将部分内容隐藏在 ActionBar 下。
解决这种行为的最佳方法是什么?
有两个具有不同 marginTop 值的进度条,并在确定模式和不确定模式之间切换时通过更改视图可见性在它们之间切换?更改模式时更改进度条的 LayoutParams?还是其他方式?
在这两种情况下,我都可以进行选择性处理,例如,在第一种方式中,我将为不同的 API 版本设置不同的布局,而在第二种方式中,如果 SDK_INT 值小于 16,则仅更改 LayoutParams。
有没有更好的方法来解决这种行为?如果不是,它们中的哪一个会“更好”?这里更好的可能是更少的资源使用和/或可维护性,但我也对它们的优缺点感兴趣。
【问题讨论】:
-
首先你应该试着理解它为什么会跳。它是否与使用的可绘制资源相关联?如果是这样,您可以简单地提供自己的资源
-
正确。 ICS 中不确定进度条的可绘制对象的高度与确定进度条的高度不同,因此视图以稍微不同的垂直偏移量绘制它们。它已在 AOSP 的提交
d0f8ea5中修复。我通过在该提交中包含相同的资产并设置android:indeterminateDrawable="@drawable/progress_indeterminate_horizontal_holo"来解决问题。感谢您指出!
标签: android performance android-layout