Как динамически изменить высоту разделителя списка?

У меня есть список, в котором между разными строками должна быть разная высота разделителя. Итак, как мы можем динамически установить высоту разделителя?

Предположим, у меня есть 10 строк, и между первыми двумя строками должна быть высота разделителя 5, а затем между следующими 5 строками должна быть высота разделителя 1 и так далее.

Может ли кто-нибудь сообщить мне, как это сделать?


person sunil    schedule 01.05.2010    source источник


Ответы (1)


Один из способов - сделать разделительные ряды. Установите их как неактивные в вашем методе адаптера isEnabled. Я делаю это для заголовков разделов, но это почти то же самое. Другим способом было бы вручную выложить весь список, внедрив onLayout. Если разделители могут быть пустым пространством, можно установить верхние или нижние поля для корневого представления ваших строк. В xml это будет:

    android:layout_marginTop='5px'

В противном случае просто сделайте разделители частью строк.

person drawnonward    schedule 01.05.2010
comment
Я не понимаю, как можно включить разделитель как часть строки. У меня есть фоновое изображение для строки. Если я включу разделитель как часть строки, он будет включен в само изображение. Я хотел бы, чтобы это изображение было ниже изображения строки. Как это сделать? - person sunil; 03.05.2010
comment
Каждая строка может быть ViewGroup с любым количеством дочерних представлений. Одним из таких дочерних представлений может быть изображение разделителя. Это означало бы использование разных типов строк для разделителей разного размера. - person drawnonward; 03.05.2010
comment
Можете ли вы привести пример, показывающий, как это сделать? Вы действительно хотите поместить разделитель в файл xml строки или иметь другой файл xml для разделителя. Пожалуйста, дай мне знать. - person sunil; 15.05.2010
comment
Поместите разделитель в строку xml для строк, которые имеют больший разделитель. Вы можете иметь несколько разных макетов строк или редактировать каждую строку по мере ее создания. - person drawnonward; 15.05.2010
comment
Да, разделитель списка должен быть пустым, т. е. он будет отражать цвет фона экрана. Не могли бы вы сообщить мне, как это сделать? Я действительно очень невежда в этом. - person sunil; 17.06.2010
comment
Я воспользовался предложением создать разные xml-файлы для строк с разделителями и без них, а затем в getView адаптера я увеличил, какой из них я хотел, в зависимости от позиции. Работал отлично. - person Adam Johns; 04.03.2014
comment
ОДНАКО, имейте в виду, что при использовании разных макетов разной высоты высота списка будет определяться первой раздутой строкой. Так, например, если ваша первая раздутая строка не такая высокая, как другие строки, то общая высота вашего списка не будет достаточно высокой, чтобы вместить все строки. Я все еще не знаю, как решить эту проблему. - person Adam Johns; 04.03.2014