Android 5 以上で、ListView の item を disable (= ListAdapter#isEnabled(position)
で false
を返す)にすると、item の境界線が消える現象に遭遇しました。
その問題の回避方法(※ベストな策だとは思っていない)を記します。
Disappearing divider in ListView when ArrayAdapter.isEnabled returns false
も見ましたが、5系ではダメっぽいです。(←英語力の問題だったらゴメンナサイ。。。)
現象
- Android 5 以上で、ListView の disable な item の境界線が消える
- どうやら Disable だけではなく、Enabled でも次の item が Disable なら消える模様…
※↓Android4 の端末での表示
ちゃんと表示されてますね。
回避対応
- Adapter のレイアウトファイルに自分で境界線を追加する
- 境界線を付与して、今までのレイアウトファイルを include するのがオススメ↓
- https://github.com/tatsuhama/ListViewItemBorder/blob/master/app/src/main/res/layout/list_item_with_divider.xml
- 色を固定で書いているのは微妙な気がする…
- ListView に
setDivider(null)
を設定する
再現確認プログラム
https://github.com/tatsuhama/ListViewItemBorder
に置きました。
回避する改修も行っているので、併せて↑も参照下さい。