滚动 ListView 时推出/拉入 ActionBar
Posted
技术标签:
【中文标题】滚动 ListView 时推出/拉入 ActionBar【英文标题】:Push out/pull in ActionBar when ListView is scrolled 【发布时间】:2014-10-04 18:05:22 【问题描述】:最新的 Google 报亭应用程序具有 ActionBar
和 ViewPager
标签栏,当向下滚动下方的列表时,它会慢慢地从屏幕顶部滑出。 重要的是,它以与列表滚动相同的速度缓和。当列表向上滚动时,ActionBar
会回到屏幕上,再次以相同的速度滚动列表。
我不是指 ActionBar
hide()
和 show()
方法,而是我想知道如何以相同的速率隐藏和显示 ActionBar,使其下方的列表滚动。
这是如何实现的?事实证明,所有试图找到记录在案的解决方案的尝试均不成功,因此我们将不胜感激。
【问题讨论】:
【参考方案1】:简答
创建一个作为 ActionBar 替代品的 Fragment 子类。滚动事件后使用 OnScrollListener 更新片段视图的 translationY
。
长答案
在挖掘了ActionBar源代码之后,似乎没有访问ActionBar容器视图的公共方法。但是有意愿的地方,there's a way。
您可以使用以下方法获取对操作栏视图的引用:
int resId = getResources().getIdentifier("action_bar_container", "id", "android");
View actionBarContainer = findViewById(resId);
免责声明:action_bar_container
是一个私人 ID,因此它受制于 Google 的奇思妙想。使用风险自负。
一旦您拥有操作栏的视图,您就可以根据需要对其进行动画处理。
如果你有兴趣,我会一起破解 a semi-functional example。
希望这会有所帮助!
【讨论】:
能提供这样的解决方案真是太好了,非常感谢。正如你所说,我将不得不做出决定是否依赖 action_bar_container 未来不被改变是否值得冒险。谢谢。 我需要做一个puch out/pull in action bar tabs。在导入那个github之后,我在src中看不到任何java文件。你能检查一下并告诉我。以上是关于滚动 ListView 时推出/拉入 ActionBar的主要内容,如果未能解决你的问题,请参考以下文章
recyclerview代替listview和grideview
ListView为啥滚动listView时edittext数据丢失