2012-04-10 7 views
0

下記のAndroid ListViewを実装しようとしています。各黄色のボックスは、ListViewの1行を表します。行が表示されている場合、各行は前後の行で重ねられます。私はGoogleを検索しましたが、適切な解決策が見つかりませんでした。誰かが手がかりを持っているなら、私に知らせてください。Androidのリストビューをオーバーレイする方法

ありがとうございます。

enter image description here

答えて

3

ボックスの外側を考えてください。行が重なっていないが、対角線があるリストを想像してみてください。あなたのコードでは、0にリストビューの分周器の高さを設定します。

ListView listView = (ListView)findViewById(R.id.your_listview); 
listView.setDivider(null); 
listView.setDividerHeight(0); 

すると、奇数行のrows-いずれかの偶数行のための別の2つのドローアブルを作成します。

enter image description hereenter image description here

を(これらの2つのイメージは、適切に/均等にサイズが設定されていないので使用しないでください。特定のリストのイメージを作成してください)。

その後、あなたのリストビュー用のアダプタを作成 - そしてそのgetView方法では、あなたの要素に対応する背景設定:

@override 
public void getView(int position, View convertView, ViewGroup parent) { 
    MyView row; 

    if(convertView == null) { 
     row = (MyView)convertView; 
    } 
    else { 
     row = ... //create your view - inflate or create in code 
    } 

    row.setBackgroundResource(position%2==1 ? R.drawable.row_odd : R.drawable.row_even); 

    ... //populate the rest of the row with whatever you need 

    return row; 
} 

出来上がりを!

最後に

enter image description here

:あなたは( - - これらは概略のみを目的としており、最終的な結果にあなたがそれらを持っていないことに注意してください、この模式的に黒い線が行の間の境界を表す)必要なものな効果を得ますアイテムが選択されているときに「行」を強調表示したい場合は、カスタム状態変更リスナーを実装する必要があります。これにより、選択されているセルの背景やその上下のセルも変更されます。適切なビジュアルエフェクトを作成します。

+1

を助けることができると思います。ただ作成あなたのディバイダのイメージをXMLのリストビューのディバイダdrawableとして設定してください。 –

+0

あなたの答えをありがとう。私は解決策を考えましたが、現在のアプリケーションでは使用できませんでした。画像が変更されることがあります。だから、それを実装するには、私は行をオーバーレイする必要があります。 ListViewの行をオーバーレイするか、可能かどうかを判断できるのは誰ですか?ありがとうございます。:) – mooongcle

+0

@mooongcle私は行をオーバーレイすることはできないとは思わない。アンドロイドリストの描画方法は、各行が前の行のすぐ下の特定の位置に描画されます。上の余白を負の値に設定することで、(アダプタのgetViewの)行ビューの余白を試してみることはできますが、可能性はあります。 –

0

私は同じ問題を得たが、私はそれが私のために働く、あなたが負dividerHeightを設定することができ、XMLでのListViewでは、溶液

を見つけることができました。

<ListView 
... 
android:dividerHeight="-5dp" /> 

私はそれはあなたが行が(「ディバイダー」のすべてが同じように指して)対角線行くだけ持つようにしたい場合は、あなたがはるかに簡単にこれを達成することができます誰か:)

関連する問題