以下の Android ListView を実装しようとしています。黄色の各ボックスは、ListView の 1 行を表します。行が表示される場合、各行は前の行と次の行に重なっています。Google で検索しましたが、適切な解決策が見つかりませんでした。誰かが手がかりを持っている場合は、私に知らせてください。
前もって感謝します。
以下の Android ListView を実装しようとしています。黄色の各ボックスは、ListView の 1 行を表します。行が表示される場合、各行は前の行と次の行に重なっています。Google で検索しましたが、適切な解決策が見つかりませんでした。誰かが手がかりを持っている場合は、私に知らせてください。
前もって感謝します。
既成概念にとらわれずに考えてください。このリストには行が重なっておらず、対角線だけがあると想像してください。コードで、Listview の仕切りの高さを 0 に設定します。
ListView listView = (ListView)findViewById(R.id.your_listview);
listView.setDivider(null);
listView.setDividerHeight(0);
次に、行用に 2 つのドローアブルを作成します。1 つは奇数行用、もう 1 つは偶数行用です。
と
(これらの 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;
}
そして出来上がり!必要な効果が得られます (この回路図では、黒い線は行間の境界を表しています。これらは回路図のみを目的としており、最終結果には表示されません)。
最後に、アイテムが選択されたときに「行」を強調表示する場合は、選択されているセルの背景とその上下の背景を変更するカスタム状態変更リスナーを実装する必要があることに注意してください。適切な視覚効果を生み出すためです。
同じ問題が発生しましたが、解決策を見つけることができました
xmlのListViewで、負のdividerHeightを設定できます。これは私にとってはうまくいきます。
<ListView
...
android:dividerHeight="-5dp" />
私はそれが誰かを助けることができることを願っています:)