2013-04-29 124 views
3

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

P.S.我刚刚试过android:animateLayoutChanges="true",但没有效果。视图看起来更平滑,但眨眼仍然在这里..

回答

3

当你摆脱了动作栏,你现在有更多的可视空间来绘制。这会导致框架调整活动中的所有视图。这与将VISIBLE中的任何视图的可见性更改为GONE(将其更改为INVISIBLE不会导致重绘,因为该空间仍保留)相同。

为了避免这 - 从ActionBar.show()的文档

显示的动作条,如果目前无法显示。如果托管动作条的窗口不具备的功能FEATURE_ACTION_BAR_OVERLAY它会调整应用程序内容以适应新的可用空间 “

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

+0

谢谢@Gabe Sechan,它看起来像工作解决方案(但当然可以只适用于ActionBar)。 – fraggjkee 2013-06-25 08:53:23

0

检查这个解决方法可能对您有所帮助

还需要缓存的颜色提示设置为黑色,在XML中,可能适合你的要求Listview

android:cacheColorHint="#000000" 
0

一种解决方案是有一个自定义标题视图而不是动作栏,将此标题视图添加为列表标题,并且将滚动显示列表&将更有效地使用屏幕空间。

相关问题