我正在创建一个日历。这是一个相当简单的日历和活动日历。该设计要求日历是ListView,其中
date
event
event
event
event
event
event
date
event
event
event
event
event
event
event
date
event
event
….
唯一的复杂因素是最高日期必须始终可见;它无法滚动屏幕。除非下一个日期到达顶部,它现在必须成为最高日期并保持可见,直到序列中的下一个日期取代它。
因此,对于我的设计,我有一个具有两个子视图的RelativeLayout:一个TextView和一个ListView
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F0F1F3"
tools:context=".MyAppActivity" >
<TextView …/>
<ListView … />
</RelativeLayout>
然后在MyAppActivity.java
内我使用setOnScrollListener
跟踪滚动,以便知道何时将TextView中的值设置为最新日期。通过使用TextView,我确保始终可见顶级日期。
但问题如下。如果当前最高日期是date1而下一个日期是date2。当date2即将成为最高日期时:我需要有某种类型的动画,显示date2将date1推迟到成为最佳日期。
我一直在尝试一些东西,例如当它变为firstVisibleItem
时删除date2,因为我将textView的值从date1的值替换为date2的值。但是这种方法令人生畏,因为如果用户向后滚动,他应该看到前一个日期;等等。
有没有人知道如何通过推动date1取代date1来取代date1?
或者更好:
有没有办法告诉listView将某个项目保留在可见项目的顶部?
答案 0 :(得分:0)
这可能有点过度和资源密集,但是没有TextView作为“标题”,你可以使它成为一个与TextView相同大小的ListView。 ListView中的项目将是您日历中的所有不同日期。然后,每次要切换“标题”日期时,都会使用类似ListView .smoothScrollToPosition(int pos)
的内容。我没有测试这个或任何东西,但它似乎是一个可行的解决方案。