Кнопки

Кнопка может содержать текст, иконку или одновременно и то и другое, что указывает на действие, которое она выполняет.

Есть три способа создать кнопку в разметке, в зависимости от ее внешнего вида:

  • С текстом, используя класс Button:

  • С иконкой, используя класс ImageButton:

  • С текстом и иконкой одновременно, используя класс Button с атрибутом android:drawableLeft:

Обработка нажатия

При нажатии на кнопку, объект типа Button получает событие on-click.

Для указания метода обработки нажатия, используется атрибут android:onClick для элемента <button>. В качестве значения атрибута выступает название метода, который должен быть реализован в коде класса явления, использующего разметку.

Например, создадим разметку с кнопкой и укажем имя метода, который будет вызываться при нажатии:

В коде явления, которое будет использовать данную разметку, создадим соответствующий метод:

Метод, указанный в атрибуте android:onClick должен иметь сигнатуру в точности, как указано выше. Метод должен:

  • Быть публичным (public).
  • Возвращать тип void.
  • Принимать в качестве единственного параметра объект типа View (это будет объект, по которому кликнули).

Использование слушателя OnClickListener

Кроме того вы можете обработать событие нажатия программно, не прибегая к XML разметке. Это может понадобиться, если экземпляр объекта создается в коде во время выполнения приложения, или вам нужно обработать нажатие, которое произошло во фрагменте (Fragment).

Чтобы это сделать, создайте объект View.OnClickListener и назначьте его для кнопки с помощью метода setOnClickListener(View.OnClickListener):

Стилизация кнопки

Внешний вид кнопки (фоновое изображение или шрифт) может отличаться на различных устройствах, поскольку устройства разных производителей зачастую имеют различные стандартные стили для компонентов ввода.

Вы можете полностью управлять внешним видом компонентов, используя темы. К примеру, чтобы гарантировать, что все устройства на Android 4.0 и выше используют тему Holo, укажите атрибут android:theme="@android:style/Theme.Holo" для элемента <application> в манифесте.

Чтобы использовать различный фон для кнопок, укажите подходящий ресурс типа drawable или color в атрибуте android:background. Кроме того, вы можете создать индивидуальный стиль для кнопки, который работает аналогично HTML стилям, позволяя определить фон, шрифт, размер и другие параметры. Более подробно об этом рассказано в разделе Стили и темы.

Кнопка без бордюра

Кнопка без бордюра напоминает обычную кнопку без бордюра и фона, однако может менять внешний вид при изменении состояния, например при нажатии.

Для создания такой кнопки, примените стиль borderlessButtonStyle. Например:

Настройка фона

Если вы хотите в корне переделать внешний вид кнопки, поменяйте фон. Помните, что вместо простого рисунка или цвета лучше использовать ресурс список состояний, который позволяет менять внешний вид кнопки при изменении ее состояния. В XML можно указать изображение и цвет для трех разных состояний кнопки.

Для использования списка состояний в роли фона кнопки проделайте следующее:

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

    Чтобы гарантировать, что изображения пригодны для кнопок различных размеров, создавайте Nine-patch изображения.

  2. Поместите изображения в директорию res/drawable/ проекта. Лучше всего отобразить в названии состояния, для которых предназначено изображение, например button_default.png, button_pressed.png и button_focused.png.
  3. Создайте в директории res/drawable новый XML файл с именем, вроде button_custom.xml и вставьте в него следующий код:

    Данный код описывает единый ресурс типа drawable, который позволяет менять внешний вид кнопки при изменении ее состояния.

    • Первый элемент <item> описывает внешний вид для нажатой (активной) кнопки.
    • Второй <item> описывает внешний вид для кнопки, имеющей фокус (подсвечивание кнопки при использовании трекболла или джойстика).
    • И наконец, третий элемент <item> описывает изображение, которое используется по умолчанию (когда кнопка не нажата и не имеет фокуса).

    Примечание: Порядок элементов <item> очень важен! Чтобы найти соответствующий состоянию элемент, список просматриваются по порядку сверху вниз. Именно поэтому изображение, которое используется по умолчанию всегда должно стоять последним в списке.

  4. После того, как ресурс создан, примените его для кнопки:

Более подробно о XML синтаксисе, включая объявление других состояний кнопки, описано в разделе Ресурсы типа Drawable.

Добавить комментарий