3

我有一个非常复杂的ListView元素。当用户向下滚动(例如到第 5 个元素)时,我隐藏ActionBar(通过hide()方法)为ListView. 看起来当我这样做时,android框架调用了类似redraw方法来将ListView的内容缩放到更大的空间。这种缩放发生在运行时,没有任何内置动画。此外,对于复杂的布局(如我的),重绘为视图提供了丑陋的闪烁效果,从而改变了自己的位置或大小。在大多数情况下,这种行为似乎使任何动态布局更改都无法使用。有人对如何解决这个问题有任何想法吗?可能有一些棘手的方法可以为这种重绘提供动画吗?

PS我刚试过android:animateLayoutChanges="true",但没有效果。视图看起来更流畅,但闪烁仍然在这里..

4

3 回答 3

3

当您摆脱操作栏时,您现在有更多的可视空间来绘制。这会导致框架调整 Activity 中所有视图的大小。这与将任何视图的可见性从 VISIBLE 更改为 GONE 时发生的情况相同(将其更改为 INVISIBLE 不会导致重绘,因为仍然保留空间)。

为了避免这种情况-来自 ActionBar.show() 上的文档

"

如果当前未显示 ActionBar,则显示它。如果承载 ActionBar 的窗口没有 FEATURE_ACTION_BAR_OVERLAY 功能,它将调整应用程序内容的大小以适应新的可用空间。"

因此,您需要指定该功能。然后您可能需要调整您的视图,以便操作栏不会覆盖您想要显示的任何内容。

于 2013-06-25T05:21:29.573 回答
0

检查此解决方案可能对您有所帮助

您还需要在 xml 中将缓存颜色提示设置为黑色Listview

android:cacheColorHint="#000000"
于 2013-06-25T05:52:00.480 回答
0

一种可能符合您要求的解决方案是使用一个自定义标题视图而不是操作栏,将此标题视图添加为列表标题,它将随着列表滚动并更有效地使用屏幕空间。

于 2013-07-02T05:08:35.633 回答