ListView 内のアイテムに異なる z 位置/インデックスを持たせることは可能ですか?
ListView 内の 1 つの項目を、レイアウト内の他のビューの上に常に配置したいと考えています。
ここで私のイラストを見てください:
赤いバーは、ListView の外側にある別のビューです (私の場合は垂直シークバー)。
特定のアイテムを呼び出してみView.bringToFront()
ましたが、まったく機能しませんでした。
何か案は?
ListView 内のアイテムに異なる z 位置/インデックスを持たせることは可能ですか?
ListView 内の 1 つの項目を、レイアウト内の他のビューの上に常に配置したいと考えています。
ここで私のイラストを見てください:
赤いバーは、ListView の外側にある別のビューです (私の場合は垂直シークバー)。
特定のアイテムを呼び出してみView.bringToFront()
ましたが、まったく機能しませんでした。
何か案は?
あなたが望む効果を達成する方法は次のとおりです。
リスト内の各項目には、項目の高さを示す赤いバーが含まれている必要があります。そうすれば、すべての赤いバーが一列に並んで、実際にはアイテムごとに 1 つの赤いバーがあるのに、1 つの赤いバーしかないように見えます。
を使用している場合FrameLayout
、子の順序によって描画順序が決まります。たとえば、 の 3 番目の子はFrameLayout
1 番目と 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>