listview中的第一个可见项,用简单的动画替换textView

时间:2013-09-15 14:49:43

标签: android android-layout android-listview android-animation

我正在创建一个日历。这是一个相当简单的日历和活动日历。该设计要求日历是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将某个项目保留在可见项目的顶部?

1 个答案:

答案 0 :(得分:0)

这可能有点过度和资源密集,但是没有TextView作为“标题”,你可以使它成为一个与TextView相同大小的ListView。 ListView中的项目将是您日历中的所有不同日期。然后,每次要切换“标题”日期时,都会使用类似ListView .smoothScrollToPosition(int pos)的内容。我没有测试这个或任何东西,但它似乎是一个可行的解决方案。