Создание пользовательского элемента управления или встроенные кнопки
-
20-09-2019 - |
Вопрос
Мне нужно создать элемент управления, аналогичный UITabBar в iPhone, который должен присутствовать при каждом действии моего приложения.UITabBar по сути представляет собой батарея кнопок демонстрируя ВКЛАДКА как поведение:каждая кнопка соответствует действию.
У меня есть два решения для этого:
В XML макета для каждого действия я вставляю
<LinearLayout><Button/><Button/><Button/></LinearLayout>
элемент.А затем создайте общий класс прослушивателя, который будет обрабатывать нажатия кнопок.Таким образом, каждое действие будет иметь экземпляр этого прослушивателя.Чтобы создать собственный виджет, расширяющий класс LinearLayout, поместите все кнопки в качестве его статических членов и позвольте ему обрабатывать нажатия кнопок.Включите этот пользовательский элемент управления на каждый экран.
Я не уверен, какому подходу следовать.Пожалуйста посоветуй.Альтернативы также приветствуются
Вот что я думаю о вышеуказанных подходах:
Проблема с первым подходом:
Он будет генерировать много шаблонного кода (findViewByIds, setOnClickListener и т. д.).
Если предположить, что имеется 5 действий и 3 кнопки вкладок, общее количество объектов Button, созданных во время выполнения, составит 5 x 3 = 15.
Я бы выбрал второй подход, потому что:
Весь код (состояние и поведение) будет инкапсулирован классом виджета.Меньше шаблонного кода.
Поскольку кнопки будут статическими членами, общее количество объектов Button, созданных во время выполнения, будет всего три.Однако статические члены будут оставаться в памяти в течение более длительного времени (пока JVM не выгрузит класс), поскольку элемент управления присутствует на каждом экране, я думаю, это можно извинить.
Спасибо.
Решение 2
К сожалению, мне не удалось найти способ настроить встроенный TabWidget так, чтобы он выглядел как UITabBar.Итак, я собираюсь создать собственный элемент управления и использовать кнопки в качестве статических членов (второй подход).Элемент управления будет обрабатывать щелчки должным образом.
Я заметил, что отмеченное наградами приложение Plink Art также имеет элемент управления вкладками, похожий на UITabBar на iPhone.
Другие советы
Почему бы просто не использовать существующую реализацию TabWidget в Android?
http://developer.android.com/guide/tutorials/views/hello-tabwidget.html
Реализация собственного виджета не только требует дополнительной работы, но и может показаться неуместным по сравнению с другими приложениями на платформе.
В частности, вот некоторые проблемы, которые я вижу:
Если внешний вид панели вкладок изменится из-за обновления системы, вам придется переписать код.Вы также вряд ли будете точно соответствовать внешнему виду встроенной панели вкладок.(Вспомните Java в OS X.)
Каждый раз, когда пользователь нажимает на вкладку, в стек добавляется еще одно действие.Это не только пустая трата памяти, но каждый раз, когда пользователь нажимает кнопку «Назад» на телефоне, он переходит на предыдущую вкладку.Панель вкладок должна работать не так.