如何设置一个视图不滚动与Java滚动视图
是否有可能通过编程强制一个视图内滚动视图不滚动?如何设置一个视图不滚动与Java滚动视图
就像联系人列表中的字母标题一样。当用户滚动名字以'A'开头的所有联系人列表时,'A'栏不滚动。当用户滚动到'A'结束时,'B'栏从ScrollView的底部向上滚动,最后在顶部重新打开'A'并停留在那里。
我的描述很抽象,希望你能理解。
也预先感谢。
联系人列表使用ListView而不是ScrollView。我认为可以做的一个方法是在顶部有一个固定的标题。您可以根据屏幕上显示的内容更改其内容。
将一个OnScrollListener附加到ListView。您将在onScroll中获得第一个可见位置的视图。然后根据视图中的内容更改标题的内容。
您不需要在ListView中为列表中的第一部分添加标题,因为它已经在您的ScrollListener中处理了。保持标题行和顶部视图的样式相同,你会对固定标题产生幻想。
我认为您需要在ScrollView中将“静态文本”方法与“节标题”结合使用:该列表应该包含带有字母“A”,“B”等的禁用/不可点击项目。节标题在视图顶部上方滚动,将ScrollView上方的静态TextView内容更改为标题内容。即,当“B”标题项目滚动出视图时,TextView现在包含“B”。
当然,棘手的部分将检测何时“节标题”从顶部滚动,或在相反方向滚动时进入视图。
对于奖励积分,在内容更改时使用TextView中的“向上推动”动画,使其看起来像列表项滚动到TextView中。 (SDK中的API演示应用程序中的“... \ view \ Animation2.java”中有一个此动画的示例)。
更新:经过进一步审查...这里是一些类等努力,使这项工作(这是一个很有趣的事情对我来说!)相关:
android.widget.AbsListView.OnScrollListener
界面,看看如何检测滚动事件。您需要跟踪以前的“视图顶部”位置,以确定您正在滚动的方向(选择上下滑动动画)。
我上面列出的动画是不是真的你想要的 - 更好看android.widget.TextSwitcher
类和push*.xml
文件在SDK/Android的X /数据/ RES /阿尼姆目录。
您肯定需要自己的适配器子类才能将节视图插入列表中:getView(...)
可以不同地设置行视图的属性(bkgnd,文本样式等),如果该行是节标题或不是。在TextSwitcher视图工厂中重新使用此代码以填充列表上方的静态TextView/Switcher。
玩得开心...!
Ty和+1为动画提示,将考虑到这一点。 – 2011-03-15 11:15:03
我明白你的意思了:有一个固定的标题在ScrollView外部的顶部查看,以及ScrollView中的其他scolling header视图。当滚动标题视图到达顶部时,更改固定标题视图的文本。 +1这个想法,但我希望有人能解决我的问题。 – 2011-03-15 07:10:53