Создание пользовательского элемента управления или встроенные кнопки

StackOverflow https://stackoverflow.com/questions/1944318

Вопрос

Мне нужно создать элемент управления, аналогичный UITabBar в iPhone, который должен присутствовать при каждом действии моего приложения.UITabBar по сути представляет собой батарея кнопок демонстрируя ВКЛАДКА как поведение:каждая кнопка соответствует действию.

У меня есть два решения для этого:

  1. В XML макета для каждого действия я вставляю <LinearLayout><Button/><Button/><Button/></LinearLayout> элемент.А затем создайте общий класс прослушивателя, который будет обрабатывать нажатия кнопок.Таким образом, каждое действие будет иметь экземпляр этого прослушивателя.

  2. Чтобы создать собственный виджет, расширяющий класс LinearLayout, поместите все кнопки в качестве его статических членов и позвольте ему обрабатывать нажатия кнопок.Включите этот пользовательский элемент управления на каждый экран.

Я не уверен, какому подходу следовать.Пожалуйста посоветуй.Альтернативы также приветствуются

Вот что я думаю о вышеуказанных подходах:
Проблема с первым подходом:

  1. Он будет генерировать много шаблонного кода (findViewByIds, setOnClickListener и т. д.).

  2. Если предположить, что имеется 5 действий и 3 кнопки вкладок, общее количество объектов Button, созданных во время выполнения, составит 5 x 3 = 15.

Я бы выбрал второй подход, потому что:

  1. Весь код (состояние и поведение) будет инкапсулирован классом виджета.Меньше шаблонного кода.

  2. Поскольку кнопки будут статическими членами, общее количество объектов Button, созданных во время выполнения, будет всего три.Однако статические члены будут оставаться в памяти в течение более длительного времени (пока JVM не выгрузит класс), поскольку элемент управления присутствует на каждом экране, я думаю, это можно извинить.

Спасибо.

Это было полезно?

Решение 2

К сожалению, мне не удалось найти способ настроить встроенный TabWidget так, чтобы он выглядел как UITabBar.Итак, я собираюсь создать собственный элемент управления и использовать кнопки в качестве статических членов (второй подход).Элемент управления будет обрабатывать щелчки должным образом.
Я заметил, что отмеченное наградами приложение Plink Art также имеет элемент управления вкладками, похожий на UITabBar на iPhone.

Другие советы

Почему бы просто не использовать существующую реализацию TabWidget в Android?

http://developer.android.com/guide/tutorials/views/hello-tabwidget.html

Реализация собственного виджета не только требует дополнительной работы, но и может показаться неуместным по сравнению с другими приложениями на платформе.

В частности, вот некоторые проблемы, которые я вижу:

  1. Если внешний вид панели вкладок изменится из-за обновления системы, вам придется переписать код.Вы также вряд ли будете точно соответствовать внешнему виду встроенной панели вкладок.(Вспомните Java в OS X.)

  2. Каждый раз, когда пользователь нажимает на вкладку, в стек добавляется еще одно действие.Это не только пустая трата памяти, но каждый раз, когда пользователь нажимает кнопку «Назад» на телефоне, он переходит на предыдущую вкладку.Панель вкладок должна работать не так.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top