Как стать автором
Обновить

Комментарии 6

Было бы неплохо для наглядности прикрепить изображение.
Да там обычная кнопка, чего прикреплять-то?
Ну мне кажется совсем не красиво. Все эти атрибуты custom_toggle:customImage_0 — это страх какой-то. Почему не сделать просто массив? Тем более, что в коде все равно оказывается массив. Зачем эти искусственные ограничения?
И обработка этих атрибутов перестанет быть такой простыней.

Ну и вообще для таких вещей StateListDrawable, которые можно назначить хоть кнопке, хоть картинке. Почитать как использовать кастомные state можно тут stackoverflow.com/questions/4336060/android-how-to-add-a-custom-button-state
Спасибо за комментарии и конструктивную критику. Согласен с большинством замечаний. Но в то же время я пытался максимально упростить текст для понимания именно начинающими разработчиками. Более-менее продвинутый организм имхо легко догадается использовать string-array вместо отдельных строк. Главная цель у нас — создать контрол с множественным произвольным количеством внутренних состояний, циклически переключающихся при нажатии на элемент. Именно в этих наших кастомных состояниях весь смысл. Согласитесь, ведь тот же StateList надо привязывать к каким-то состояниям, а что предлагают нам стандартные элементы? Два состояния у Toggle (я не беру всякие focused, pressed или enabled). Нас интересует реакция на последовательные нажатия. В приведенном примере с SO я не заметил каких-либо обработчиков нажатий, только способ привязки xml-атрибутов к свойствам элемента, отличный от моего, но принципиально смысла это не меняет. А так да, имея наш набор состояний мы можем привязать к нему любой селектор и с картинками, и со строками и т.д. Имея внутри элемента собственный обработчик нажатий мы можем прикрутить к нему свой интерфейс (добавил в код). Да все можем. Еще раз повторюсь — ориентировался на очень сильно начинающих, ибо и сам далеко не профи.

Как пример — картинка, немного отличающаяся от приведенного кода. Кнопка с тремя состояниями, при изменении которых циклически меняется текст и DrawableLeft, а в одном из состояний — DrawableRight.

image
Спасибо, как раз для начинающих
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории