如何设置一个视图不滚动与Java滚动视图

问题描述:

是否有可能通过编程强制一个视图内滚动视图不滚动?如何设置一个视图不滚动与Java滚动视图

就像联系人列表中的字母标题一样。当用户滚动名字以'A'开头的所有联系人列表时,'A'栏不滚动。当用户滚动到'A'结束时,'B'栏从ScrollView的底部向上滚动,最后在顶部重新打开'A'并停留在那里。

我的描述很抽象,希望你能理解。

也预先感谢。

联系人列表使用ListView而不是ScrollView。我认为可以做的一个方法是在顶部有一个固定的标题。您可以根据屏幕上显示的内容更改其内容。

将一个OnScrollListener附加到ListView。您将在onScroll中获得第一个可见位置的视图。然后根据视图中的内容更改标题的内容。

您不需要在ListView中为列表中的第一部分添加标题,因为它已经在您的ScrollListener中处理了。保持标题行和顶部视图的样式相同,你会对固定标题产生幻想。

+0

我明白你的意思了:有一个固定的标题在ScrollView外部的顶部查看,以及ScrollView中的其他scolling header视图。当滚动标题视图到达顶部时,更改固定标题视图的文本。 +1这个想法,但我希望有人能解决我的问题。 – 2011-03-15 07:10:53

我认为您需要在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。

玩得开心...!

+0

Ty和+1为动画提示,将考虑到这一点。 – 2011-03-15 11:15:03

如前所述,您需要一个ListView。对于类似于Android 4+中的人物应用的效果,我使用了这款优秀的library(自由和开源)。