Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > Custom View - два контрола в одном, как быть?


Автор: AleksPingvin 27.2.2012, 15:45
Добрый день!

Есть ListView с кастомным элементом.
Кастомный элемент должен представлять собой некую кнопку с нужной обводкой, нужным градиентом, изображением приклееном к ее правой части и чекбоксом к левой, заданным текстом.
Первое что я сделал создал свой класс и унаследовался от View. Перегрузил onDraw в котором рисую контур, заливаю градиентом, рендерю текст и картинку.
А вот как засунуть в нее чекбокс (опять же не стандартный, а свой) пока не понял, ибо addView доступен только для наследников ViewGroup.
С другой стороны я ведь пишу компонент, а не контейнер и наследоваться от существующих или от ViewGroup логически не корректно как-то. 
Думал попробовать в компоненте рендерить и чекбокс, но возникает вопрос как корректно отловить события его активации-деактивации. OnTouch конечно хорош, но мне кажется это не самое верное решение (боюсь будут ложные срабатывания из-за "дребезга" при касании пальцем области чекбокса) + надо отрабатывать и просто клик по кнопке.

Как быть?

Автор: McBlob 27.2.2012, 16:44
Собсна, если у Вас кастомный элемент есть набор из нескольких, то почему его не унаследовать от GroupView?

Не понял зачем Вы перегружаете какойто onDraw когда надо перегрузить getView() BaseAdapter`a

Автор: AleksPingvin 27.2.2012, 17:09
А кто вам сказал что я перегружаю onDraw у листа. Я речь вел про компонент кнопки.

Автор: McBlob 27.2.2012, 19:50
Хорошо, а зачем перегружать onDraw() кнопки? Почему не назначить ей селектор в качестве бэкграунда?
Я бы, на Вашем месте, нарисовал итем в XML`е, а потом применил бы его при помощи LayoutInflatter`a

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)