10

ListView 内のアイテムに異なる z 位置/インデックスを持たせることは可能ですか?

ListView 内の 1 つの項目を、レイアウト内の他のビューの上に常に配置したいと考えています。

ここで私のイラストを見てください:

ここに画像の説明を入力

赤いバーは、ListView の外側にある別のビューです (私の場合は垂直シークバー)。

特定のアイテムを呼び出してみView.bringToFront()ましたが、まったく機能しませんでした。

何か案は?

4

1 に答える 1

1

あなたが望む効果を達成する方法は次のとおりです。

リスト内の各項目には、項目の高さを示す赤いバーが含まれている必要があります。そうすれば、すべての赤いバーが一列に並んで、実際にはアイテムごとに 1 つの赤いバーがあるのに、1 つの赤いバーしかないように見えます。

を使用している場合FrameLayout、子の順序によって描画順序が決まります。たとえば、 の 3 番目の子はFrameLayout1 番目と 2 番目の子の上に表示されます。

次に、実行時に、各アイテムのコンテンツの上または下に赤いバーを配置できます。bindViewアダプタのメソッドでは、bringToFrontメソッドを使用して赤いバーをそのビューの前面に移動できます。ビューは で再利用されることを忘れないでくださいListView。赤いバーを毎回正しい z 位置に移動する必要があります。

以下は、ビュー内の項目の非常に簡略化された XML ファイルの例です。さらに情報が必要な場合はお知らせください。

item_red_bar_bottom.xml:

<FrameLayout ...>
   <ImageView .../> <!-- Red bar on bottom -->
   <FrameLayout ...>
       <!-- Normal item contents go here -->
   </FrameLayout>
</FrameLayout>
于 2013-06-02T02:24:44.030 に答える