カレンダーを作成中です。日付とイベントを含むかなりシンプルなカレンダーです。設計では、カレンダーが ListView である必要があります。
date
event
event
event
event
event
event
date
event
event
event
event
event
event
event
date
event
event
….
唯一の複雑な点は、トップの日付が常に表示されている必要があることです。画面からスクロールできません。次の日付が一番上に達した場合を除いて、それが一番上の日付になり、シーケンスの次の日付がそれを置き換えるまで表示されたままになる必要があります。
したがって、私のデザインでは、TextView と ListView の 2 つの子ビューを持つ RelativeLayout があります。
<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>
次に、TextView の値をいつ一番上の日付に設定するかを知るために、スクロールを追跡するためMyAppActivity.java
に使用します。setOnScrollListener
TextView を使用することで、トップの日付が常に表示されるようにしています。
しかし、問題は次のとおりです。現在のトップの日付が date1 で、次の日付が date2 の場合。date2 が最上位の日付になろうとしている場合: date2 が date1 を押し出して最上位の日付になることを示す何らかのアニメーションが必要です。
firstVisibleItem
TextViewの値をdate1の値からdate2の値に置き換えると、 date2を削除するなど、いくつかのことを試してきました。しかし、ユーザーがスクロールバックすると、前の日付が表示されるはずなので、そのアプローチは困難です。などなど
date2 を邪魔にならないように押して date1 を置き換える方法を知っている人はいますか?
またはさらに良い:
listView に特定のアイテムを表示アイテムの一番上に保持するように指示する方法はありますか?