У меня есть необходимость создать элемент управления, похожий на UITabBar, в iPhone, который должен присутствовать во всех действиях моего приложения. UITabBar, по сути, представляет собой набор кнопок, демонстрирующих поведение, аналогичное TAB: каждая кнопка отображается на действие. У меня есть два решения для этого:
1. В макете XML для каждого действия я вставляю элемент <LinearLayout><Button/><Button/><Button/></LinearLayout>
. И затем есть общий класс слушателя, который будет обрабатывать нажатия кнопок. Таким образом, каждое действие будет иметь экземпляр этого слушателя.
2. Чтобы создать собственный виджет, расширяющий класс LinearLayout, поместите все кнопки в качестве статических членов и дайте ему обрабатывать нажатия кнопок. Включите этот пользовательский элемент управления на каждом экране.
Я не уверен, какой подход придерживаться. Пожалуйста посоветуй. Альтернативы также оценили
Вот что я думаю по этому поводу:
Проблема с первым заходом:
1. он сгенерирует много кода котельной пластины (findViewByIds, setOnClickListener и т. Д.)
2. При условии, что есть 5 действий и 3 кнопки вкладки, общее количество объектов Button, созданных во время выполнения, будет 5 x 3 = 15
Я бы хотел выбрать второй подход, потому что:
1. Весь код (состояние и поведение) будет инкапсулирован классом виджета. Меньше кода Boilerplate.
2. Так как кнопки будут статическими членами, общее количество объектов Button, созданных во время выполнения, будет только три. Хотя статические члены будут оставаться в памяти более долгое время (до тех пор, пока JVM не выгружает класс), так как элемент управления присутствует на каждом экране, я думаю, это может быть оправдано.
Спасибо.