0

カレンダーを作成中です。日付とイベントを含むかなりシンプルなカレンダーです。設計では、カレンダーが 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に使用します。setOnScrollListenerTextView を使用することで、トップの日付が常に表示されるようにしています。

しかし、問題は次のとおりです。現在のトップの日付が date1 で、次の日付が date2 の場合。date2 が最上位の日付になろうとしている場合: date2 が date1 を押し出して最上位の日付になることを示す何らかのアニメーションが必要です。

firstVisibleItemTextViewの値をdate1の値からdate2の値に置き換えると、 date2を削除するなど、いくつかのことを試してきました。しかし、ユーザーがスクロールバックすると、前の日付が表示されるはずなので、そのアプローチは困難です。などなど

date2 を邪魔にならないように押して date1 を置き換える方法を知っている人はいますか?

またはさらに良い:

listView に特定のアイテムを表示アイテムの一番上に保持するように指示する方法はありますか?

4

1 に答える 1

0

これは少しやり過ぎでリソースを大量に消費するかもしれませんが、TextView を「ヘッダー」として使用する代わりに、TextView と同じサイズの ListView にすることができます。その ListView 内のアイテムは、カレンダーのすべての異なる日付になります。次に、「ヘッダー」の日付を切り替えるたびに、 ListViews のようなものを使用します.smoothScrollToPosition(int pos)。私はこれなどをテストしていませんが、実行可能な解決策のようです。

于 2013-09-15T15:26:37.460 に答える