2011-01-19 2 views
2

Я пытался получить эту работу в течение некоторого времени ... Есть ли способ поставить прозрачный фиксированный заголовок на ListView, так это выглядит вроде как это:Прикрепление фиксированного, прозрачного заголовка к ListView?

Transparent sticky header

Как вам прокрутите вверх, заголовок в конечном итоге станет обычным заголовком с пунктом 1 ниже него.

Я предполагаю, что мне придется реализовать onScrollListener и сделать что-то вроде, когда первый видимый элемент - это элемент 2 в списке, начните перемещать поля списка на 1 пиксель, пока он не станет ниже заголовка? Или есть лучшие способы? Любые идеи о том, как можно сделать что-то подобное?

ответ

5

Я бы сделал FrameLayout ... и положил в него свой ListView, заполнив экран. Затем положите TextView поверх этого. Чтобы получить желаемое поведение наверху, возможно, у вас есть пустой элемент в позиции 0 списка или просто сделать верхнее заполнение элемента списка 0 имеющим высоту вашего заголовка ...

Это имеет смысл? ListView должен прокручиваться под TextView в FrameLayout.

+0

Это похоже на хорошее решение. Вместо того, чтобы просто добавить пустой элемент, мое предложение состояло в том, чтобы использовать 'addHeaderView()' в вашем ListView, чтобы добавить пустой вид того же размера, что и ваш заголовок. – kcoppock

+0

Это имеет смысл. Заполнение не работает, хотя из-за того, что мои представления имеют цвета фона, поэтому я добавил добавление пустого представления того же размера, что и мой заголовок, с помощью addheaderview, как предположил kcoppock. – AmITheRWord

2

Вы можете использовать RelativeLayout для того, чтобы вы могли получить оси Z, используя некоторые свойства;)

Update:

Например, используя RelativeLayout:

RelativeLayout
--- -ListView
---- TransparentHeader

Появится в изображении, которое отображается на изображении.

В комментариях: Android размещает элементы макета в том порядке, в котором они определены на вашем xml, так что виджеты внизу макета будут расположены вверху.

+1

Какие свойства? – kcoppock

+0

Рамка кадра будет использовать ось Z по умолчанию в порядке объявления в вашем XML, тогда как Relative Layout - нет. –

Смежные вопросы