5

私は HeaderView を持つ ListView を持っています。

のビューの 1 つをHeaderView一番上に固定したい。

スティッキー セクション ヘッダーの例をたくさん見てきました。

StickyScrollViewItemsも見ましたが、 を使用しているListViewため、ScrollView.

OnScrollListenerこれに利用できるライブラリはありますか、それとも単にオーバーライドする必要がありますListViewか?

ありがとう。

4

2 に答える 2

1

これを行う大量のコードを書きましたが、契約上の理由で共有できません。基本的に、ここで概説したアプローチに従い、スクロール ビューではなくリストビューに適用します。

主なポイントは

  1. フローティング/スティッキーヘッダーとリストビューを兄弟として含むラッパービューを作成します
  2. isSticky ブール値でヘッダーを追加するときにプロキシ メソッドを使用します。スティッキーの場合は、同じサイズのリストビューに偽の空のヘッダーを追加し、目的のヘッダー ビューをフローティング ヘッダー ラッパーに追加します (ここでは相対レイアウトを使用します)。
  3. リスト内のダミー ヘッダー ビューの上部 px 位置を追跡するリストビューのスクロール リスナーを設定し、これを相対レイアウト内にあるフローティング ヘッダーの上マージンとして設定します。
  4. 厄介なエッジケースをすべて処理する/ OEMオーバースクロールがらくたをすべての状況で動作させる(サムスンの場合のよう

リストビューがレイアウトされた後、フローティング/固定ヘッダーの初期位置を設定することを忘れないでください。

私はそれが少し複雑だと感じており、正しくなるには微調整が必​​要です-これは私がiOSをうらやましく思う時期であり、iOS開発者は実装に時間がかかるため、あなたの怠慢を考えるでしょう:D

執筆時点で公開されているすべての Open ライブラリは、スクロール ビューまたはリスト ビュー ヘッダーを使用しています。これらのアプローチのこの問題は、リストビューがビューをリサイクルすることです (スクロールビューとは異なり、ダミービューへの参照を保持することはできません)。また、現在のライブラリはアダプターgetViewメソッドなどを使用してスティッキービューを複製しているように見えます-これは動的には適していませんリスト ビュー ヘッダー ビューはリサイクルされず、親を 1 つしか持てないため、親を変更するのは面倒です (私の場合、多くの機能があるため、同じタイプの 2 つのビューを作成したくないため、現在のライブラリを押し込みます)。私のソリューションに適合します)

于 2013-11-25T12:11:37.903 に答える
1

これを可能にするライブラリは知りませんが、ヘッダーに対して行うことはRelativeLayout、.xml を持つ .xml にを使用することListViewです。次に、必要に応じてヘッダービューを作成し、プロパティを指定します

android:layout_alignParentTop="true"

それからあなたのListView

android:layout_below="@id/idOfHeaderView

これは、私が知っているヘッダー ビューを一番上にドッキングする最も簡単な方法です。それは毎回私のために働いています。これが役立つことを願っています。

于 2013-08-12T19:41:01.383 に答える