【Android】ListViewをDisabledにしていると、区切り線(Separator)が表示されない
以下のようなコードで選択不可のListViewを作成します。
(AndroidStudioのEmpty Activityのテンプレートを使用し、
activity_main.xmlにlist_viewというidのListViewを設置)
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Listデータ作成 ArrayList<String> list = new ArrayList<String>(); list.add("row 1"); list.add("row 2"); list.add("row 3"); list.add("row 4"); list.add("row 5"); //Adaptorの設定 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list) { // 選択不可 @Override public boolean areAllItemsEnabled() { return false; } // 選択不可 @Override public boolean isEnabled(int position) { return false; } }; ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter); }
すると、区切り線が表示されません。
DisabledにするとSeparatorが非表示になる仕様のようです。
(背景色が透けて見える)
元々iOSをやっていた身からすると不思議な仕様です。
私の場合、タップイベントが不要で
タップ時の選択色を表示しない目的でDisabledにしていたため、
ListView自体はEnabledにし、ListViewの各行にカスタムレイアウトを使用して
選択色を表示しないことにしました。
こちらのblogさんでは別の対処法を書かれていて参考になりそうです。
hiro99ma blog: [android]ListViewのitemをdisableにするとlineがinvisibleだ