Можем ли мы установить логику RelativeLayout или LinearLayout в производном классе ViewGroup?

У меня есть абстрактный класс ClassA, производный от ViewGroup.

Я хотел бы расширить ClassA на этот класс:

ClassB с логикой макета LinearLayout

ClassC с логикой макета RelativeLayout

Это возможно ?

Я не нашел, как реализовать стандартную логику LinearLayout или RelativeLayout в производных методах onLayout() и onMeasure().

Есть ли другое решение, если это невозможно?


person olivier_sdg    schedule 04.05.2012    source источник


Ответы (1)


Я думаю, что было бы лучше расширить LinearLayout и RelativeLayout напрямую из ClassB и ClassC. Затем вы используете композицию, чтобы улучшить поведение этих классов с помощью логики ClassA.

person Cristian    schedule 04.05.2012
comment
Хорошо, но с этим решением я не могу использовать ClassA в качестве типа параметра для доступа к производному методу. Не так хорошо, как хотелось бы - person olivier_sdg; 04.05.2012
comment
Да, вы можете... для этого и существует делегирование. Кстати, в этом случае ClassA не должен расширять ViewGroup - person Cristian; 04.05.2012
comment
Хорошо, если я понимаю, я могу получить доступ к методам ClassA, используя экземпляр ClassA в ClassB и ClassC. Верно ? Но это невозможно преобразовать ClassA в View, что вызывает некоторые проблемы с моей реализацией. Кажется, это сложнее, чем я думал - person olivier_sdg; 09.05.2012
comment
Да, вы не можете использовать ClassA в View... но вы можете использовать ClassB и ClassC в View. - person Cristian; 09.05.2012