2011-01-19 2 views
2

...は、リストビュー上に透明固定ヘッダを配置する方法はありますので、それは一種の次のようになります。あなたのようListViewに固定の透明なヘッダーを添付しますか?私は、これはいくつかの時間のために働いて取得しようとしてきた

Transparent sticky header

上にスクロールすると、ヘッダーは最終的にその下の項目1を持つ通常のヘッダーになります。

私はonScrollListenerを実装し、最初の目に見えるアイテムがリストのアイテム2であるときに、ヘッダーの下に来るまでリストビューの余白を1ピクセル分移動させなければならないと思いますか?それとも良い方法がありますか?どのようにしてそのようなことをするかについてのアイデアは何ですか?

答えて

5

私はFrameLayoutを作成し、ListViewを最初に置いて画面を満たします。次に、その上にTextViewを配置します。上部の希望の動作を得るには、リストの位置0に空白の要素があるか、リスト項目0の上部のパディングにヘッダーの高さがあるようにしてください。

それは意味がありますか? ListViewはFrameLayoutのTextViewの下をスクロールする必要があります。

+0

これは良い解決策のようです。空白の要素を追加するのではなく、ListViewで 'addHeaderView()'を使用してヘッダーと同じサイズの空白のビューを追加することをお勧めします。 – kcoppock

+0

意味があります。私のビューには背景色があるのでパディングはうまくいかないので、kcoppockが提案したようにaddheaderviewでヘッダと同じサイズの空白のビューを追加することになりました。 – AmITheRWord

2

あなたには、いくつかのプロパティを使用してZ軸を得ることができるので、あなたは、そのためにRelativeLayoutを使用することができます;)

更新:RelativeLayoutを使用して例えば

RelativeLayout
--- -ListView
---- TransparentHeader

画像に表示される方法で表示されます。

コメント:アンドロイドは、レイアウト要素をXMLで定義されている順序で配置するため、レイアウトの下部にあるウィジェットが一番上に表示されます。

+1

どのような物件ですか? – kcoppock

+0

フレームレイアウトでは、デフォルトでXMLの宣言順でZ軸が利用されますが、相対レイアウトでは使用されません。 –