Селектор Android ImageButton - один xml на кнопку? - PullRequest
2 голосов
/ 29 июня 2010

При использовании «селектора» для задания разных изображений для кнопок для разных состояний, таких как нажатие, фокусировка и т. Д., Нужно ли мне писать xml-файл для каждой кнопки?У меня в приложении около 15-20 кнопок, поэтому мне было интересно, есть ли способ написать только один xml и ссылаться на его части?

Спасибо, Крис

Ответы [ 2 ]

1 голос
/ 12 августа 2010

StateListDrawable изменяет Drawable в зависимости от текущего состояния, так как состояние изменяется во время выполнения.Первоначально вы выбираете Drawable для использования - это то, что вы уже делаете, когда задаете Drawable в первую очередь.

Даже классы, подобные LevelListDrawable, все еще требуют, чтобы вы указали уровень Drawable, а не в фактическом представлении, используемом Drawable.и AFAIK Android автоматически проверяет, может ли Drawable обрабатывать состояния и, если это так, передает их.Drawable никогда не получает ссылку на представление, на котором используется Drawable.

Я бы просто создал несколько Drawable файлов для каждой кнопки.Если вы хотите предоставить доступ к определенным атрибутам кнопки, таким как цвет текста, отступы, размер шрифта и т. Д., Вам следует использовать стили Android.

Стили Android позволяют использовать такие стили, как BlueButton, RedButton, GreenButton, которые можно наследовать от стилей.,Таким образом, у вас может быть BlueButton, который устанавливает цвет текста, размер текста, тени текста, цвет для рисования для синего и т. Д., Затем создайте другой стиль для Red, который просто наследует BlueButton и изменяет только Drawable (хотя он может изменить любой атрибут, который он пожелает), а затемпросто используйте их на своих виджетах Button.Вам по-прежнему нужно иметь несколько Drawable-файлов для ссылок на стили, но все стили могут быть в одном файле.

1 голос
/ 29 июня 2010

Нет способа сослаться на части StateListDrawable, по крайней мере, о которых я знаю.

Однако, поскольку StateListDrawables обычно используются для фона кнопок, неясно, зачем вам это нужноболее одного на первом месте.

...