У Listview есть прозрачное пространство между его представлениями - как удалить это? - PullRequest
1 голос
/ 03 апреля 2012

У меня есть listview, который использует MergeAdapter (он может объединять в себе различные адаптеры и действовать как составной адаптер).Моя проблема: у него есть прозрачное пространство между 1-м и 2-м пунктами (это 100% не делитель, у меня другой делитель).Кстати, между 1-м и 2-м пунктами нет делителя.Я загрузил иерархию представления моего списка в просмотрщик иерархии (он состоял из 3 элементов, только 3 для целей тестирования), и вот что я обнаружил:

1-й элемент был помещен в 0-36px по вертикальной оси (высота 36px, 0px- top)

2-й элемент был помещен в 41-191px (высота 150px, верх - 41px)

3-й элемент был помещен в 196-346px (высота 150px, 196px - верх)

Ширина всех элементов равна match_parent.

Я вижу прозрачное пространство между 1-м и 2-м элементами (я не могу измерить его, но оно составляет около 5 пикселей, так же, как разница между концом 1-го элемента и началом второгоодин).Тем не менее, я не вижу прозрачного пространства между вторым и третьим пунктами, несмотря на то, что второй заканчивается в 191px, а третий начинается в 196px.Кажется, Android автоматически заполняет эту 5-пиксельную область, используя цвет фона для элементов 2–3, но не делает это для элементов 1–2.

Может кто-нибудь объяснить мне, как этовсе работает?Я могу что-то неправильно понять.Я не уверен, что мои предположения верны.

Кроме того, моя цель - избавиться от пробела между 1-м и вторым элементом.

PS Для тех, кто когда-либо работал с MergeAdapter, у меня естьнекоторые наблюдения, специфичные для этого адаптера, когда я использую:

adapter.addView(myView, false);

, он отображает виды с прозрачной областью, упомянутой выше (без делителя между myView и следующим элементом ListView).И когда я использую:

adapter.addView(myView, true);

я не вижу прозрачной области, но делителя.На самом деле мне не нужен ни разделитель, ни прозрачная область.Как это заархивировать?

PPS Я не могу разместить myView над самим ListView, несмотря на тот факт, что myView является первым элементом в ListView, потому что иногда он добавляется где-то посередине ListView.

1 Ответ

4 голосов
/ 03 апреля 2012

В ListView есть два метода: используйте его и попробуйте ....

listView.setDivider(Drawable divider);//listView.setDivider(R.drawable.divider);
listView.setDividerHeight(int height);//listView.setDividerHeight(0);

решит вашу проблему

...