- ImageButton (Кнопка-изображение)
- Общая информация
- Методы
- Примеры
- Щелчок
- Продолжительное нажатие
- Как показать текст на ImageButton?
- Как показать текст на ImageButton?
- 10 ответов
- Android: объединение текста и изображения на кнопке или ImageButton
- 14 ответов:
- Делаем красивые кнопки в Android
- Добавляем кнопку на разметку
- Атрибуты кнопки
- Включение и выключение кнопки
- Кнопка с Drawable
- ImageButton
- Обработка нажатий на кнопку
- Дизайн и стили кнопок
- Настройка стилей кнопок
- Кнопка с закруглёнными углами
- Высота и тень кнопки
- Настройка анимации тени
- Простая кнопка логина
ImageButton (Кнопка-изображение)
Общая информация
Находится в разделе Buttons.
Компонент ImageButton представляет собой кнопку с изображением (вместо текста). По умолчанию ImageButton похож на обычную кнопку.
В режиме дизайна изображение на кнопке определяется атрибутом android:src
Можно сделать двойной щелчок, чтобы сразу установить нужное свойство.
Методы
Программно можно установить изображения через различные методы.
setImageBitmap() Используется, чтобы указать в качестве изображения существующий экземпляр класса Bitmap setImageDrawable() Используется, чтобы указать в качестве изображения существующий экземпляр класса Drawable setImageResource() Используется, чтобы указать в качестве изображения существующий идентификатор ресурса (см. пример) setImageURI() Используется, чтобы указать в качестве изображения существующий адрес типа Uri. В некоторых случаях элемент кэширует изображение и после изменения изображения по прежнему выводит старую версию. Рекомендуется использовать инструкцию setImageURI(null) для сброса кэша и повторный вызов метода с нужным Uri
Примеры
С помощью метода setImageURI() можно обратиться к ресурсу типа Drawable по его идентификатору:
Например, можно задать путь Uri:
Можно обратиться к ресурсу по его типу/имени:
В этом случае код будет следующим:
Щелчок
Как и у обычной кнопки, интерес представляет только щелчок. В нашем примере мы будем менять поочередно картинки на кнопке (нужно подготовить две картинки в папке drawable)
Теперь при каждом щелчке изображение на кнопке будет циклически переключаться между двумя картинками.
Продолжительное нажатие
Кроме обычного щелчка, в Android есть особый вид нажатия на кнопку — продолжительное нажатие. Это событие происходит, когда пользователь нажимает и удерживает кнопку в течение одной секунды. Этот тип нажатия обрабатывается независимо от обычного щелчка.
Для обработки продолжительного нажатия нужно реализовать класс View.OnLongClickListener и передать его в метод setOnLongClickListener(). Класс OnLongClickListener имеет один обязательный метод OnLongClick(). В принципе это похоже на метод OnClick(), только имеет возвращаемое значение.
Запустите проект и убедитесь, что при быстром нажатии ничего не происходит, а при более продолжительном нажатии всплывает сообщение.
Источник
Как показать текст на ImageButton?
У меня есть ImageButton, и я хочу показать текст и изображение на нем. Но когда я пытаюсь
Я получаю эмулятор, у кнопки есть изображение, но без текста. Как я могу показать текст, пожалуйста, помогите мне!
Поскольку вы не можете использовать android:text я рекомендую вам использовать обычную кнопку и использовать одну из составных чертежей. Например:
Вы можете поместить выталкиваемый, где хотите, с помощью: drawableTop , drawableBottom , drawableLeft или drawableRight .
ОБНОВИТЬ
Для кнопки это тоже работает очень хорошо. Ввод android:background в порядке!
У меня была эта проблема и она работает отлично.
Технически можно поместить надпись на кнопку с изображением, если вы действительно хотите это сделать. Просто поставьте текстовое изображение над кнопкой изображения, используя FrameLayout. Просто не забудьте сделать Textview доступным.
На самом деле, android:text не является аргументом, принятым ImageButton но, если вы пытаетесь получить кнопку с указанным фоном (не по умолчанию для Android), используйте атрибут android:background xml или объявите его из класса с .setBackground();
Вы можете использовать обычную Button и атрибут android: drawableTop (или слева, справа, снизу).
Вы можете использовать LinearLayout вместо того, чтобы использовать Button , это соглашение, которое я использовал в своем приложении.
Я решил это, поставив ImageButton и TextView внутри LinearLayout с вертикальной ориентацией. Прекрасно работает!
Вот хороший пример:
И затем кнопка в вашем XML-файле:
ImageButton не может иметь text (или, по крайней мере, android:text не указан в его атрибутах).
Похоже, вам нужно использовать Button (и посмотреть на setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)) или setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)) .
Ребята Мне нужно разработать кнопку настройки и выхода из системы, я использовал приведенный ниже код.
Вы можете вставлять текст только в кнопку «Изображение». Тем не менее, вы можете сделать снимок экрана с некоторым текстом и использовать его в качестве своего изображения. Или вы можете отобразить на нем правильную кнопку.
Источник
Как показать текст на ImageButton?
у меня есть ImageButton и я хочу показать текст и изображения на нем. Но когда я примеряю эмулятор:
Я получаю изображение, но без текста. Как я могу показать текст? Пожалуйста, помогите мне!
10 ответов
как вы не можете использовать android:text Я рекомендую вам использовать обычную кнопку и использовать один из составных чертежей. Например:
вы можете поместить drawable везде, где вы хотите, используя: drawableTop , drawableBottom , drawableLeft или drawableRight .
обновление
для кнопки это тоже работает довольно хорошо. Положить android:background отлично!
у меня просто была эта проблема и работает отлично.
технически возможно поставить подпись на ImageButton Если вы действительно хотите сделать это. Просто поставьте TextView на ImageButton С помощью FrameLayout . Просто помните, чтобы не сделать Textview кликабельно.
на самом деле android:text не является аргументом, принятым ImageButton но, если вы пытаетесь получить кнопку с указанным фоном (не Android по умолчанию), используйте android:background XML-атрибута, или объявить его из класса с .setBackground();
можно использовать LinearLayout вместо Button это договоренность, которую я использовал в своем приложении
ребята, мне нужно разработать кнопку Настройки и выхода из системы, я использовал приведенный ниже код.
вы можете использовать обычный Button и атрибут android:drawableTop (или слева, справа, внизу) вместо этого.
Я решил это, поставив ImageButton и TextView внутри LinearLayout С вертикальной ориентацией. Отлично работает!
вот хороший пример круга:
а затем кнопка в вашем xml-файле:
ImageButton не может быть text (или, по крайней мере, android:text не указан в атрибутах).
фокус в том, что:
похоже, вам нужно использовать Button (и посмотреть drawableTop или setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)) .
Источник
Android: объединение текста и изображения на кнопке или ImageButton
Я пытаюсь картинку (в качестве фона) на кнопку и динамически добавлять, в зависимости от того, что происходит во время выполнения, текст над изображением.
если я использую ImageButton У меня даже нет возможности добавить текст. Если я использую Button Я могу добавить текст, но только определить изображение с android:drawableBottom и аналогичные атрибуты XML, как определено здесь.
однако эти атрибуты объединяют только текст и изображение в X-и y-измерениях, что означает, что я могу рисовать изображение вокруг моего текста, но не ниже/под моим текстом (с осью z, определенной как выходящая из дисплея).
какие-либо предложения о том, как это сделать? Одной из идей было бы либо расширить Button или ImageButton и переопределить draw() -метод. Но с моим текущим уровнем знаний я действительно не знаю, как это сделать (2D-рендеринг). Может быть, кто-то с большим опытом знает решение или хотя бы некоторые указатели для начала?
14 ответов:
можно назвать setBackground() на Button для установки фона кнопки.
любой текст будет отображаться над фоном.
Если вы ищете что-то подобное в xml есть: android:background атрибут, который работает таким же образом.
для пользователей, которые просто хотят поставить фон, значок-изображение и текст в одном Button из разных файлов: установить на Button фон, drawableTop / Bottom/Rigth / Left и обивка атрибуты.
для более сложного расположения вы также можете использовать RelativeLayout и сделать его интерактивным.
есть гораздо лучшее решение этой проблемы.
просто нормальный Button и с помощью drawableLeft и gravity атрибуты.
таким образом, вы получите кнопку, которая отображает значок в левой части кнопки и текст в нужном месте значок посередине.
просто используйте LinearLayout и притворитесь, что это Button установка background и clickable ключ:
Изз довольно хороший трюк.. 😉
Я взял другой подход от тех, которые указаны здесь, и он работает очень хорошо, поэтому я хотел бы поделиться им.
Я использую стиль для создания пользовательской кнопки с изображением слева и текстом в центре справа. Просто следуйте 4 «простых шага» ниже:
I. создайте свои 9 патчей, используя по крайней мере 3 разных файла PNG и инструмент, который у вас есть: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. После этого вы должны быть:
button_normal.9.формат PNG, button_focused.9.png и button_pressed.9.png
затем загрузите или создайте значок 24×24 PNG.
сохранить все в папке drawable / на вашем проекте Android.
второй. Создать XML-файл, называемый button_selector.xml в вашем проекте в папке drawable/. Государства должны быть такими:
раздел III. Перейти к значениям/ папку и открыть или создать стили.xml-файл и создайте следующий XML код:
ButtonNormalTextWithIcon является «дочерним стилем», потому что он расширяет ButtonNormalText («родительский стиль»).
обратите внимание, что изменение drawableLeft в стиле ButtonNormalTextWithIcon, чтобы drawableRight, drawableTop или drawableBottom вы можете поместить значок в другое положение по отношению к тексту.
раздел IV. Перейдите к папке, в план/ где у вас есть свой XML для ИП и перейти на кнопку, где вы хотите применить стиль, и сделать его выглядит так:
и. вуаля! У вас есть кнопка с изображением на левой стороне.
для меня это лучший способ сделать это! потому что, делая это таким образом, вы можете управлять размером текста кнопки отдельно от значка, который вы хотите отобразить, и использовать тот же фон, который можно нарисовать для нескольких кнопок с разными значками, соблюдая принципы пользовательского интерфейса Android с использованием стилей.
вы также можете создать тему для вашего приложения и добавить «родительский стиль» в это так, что все кнопки выглядят одинаково, и применить «дочерний стиль» со значком только там, где вам это нужно.
Источник
Делаем красивые кнопки в Android
Одним из важных компонентов пользовательского интерфейса в приложения является кнопка. Она используется для выполнения различных действий пользователя.
В этой статье мы приведём примеры использования и стилизации кнопки.
Добавляем кнопку на разметку
Пользовательский интерфейс приложения определён в XML-файле с разметкой. Вы можете добавить элемент Button и установить атрибуты вручную. Или вы можете, воспользовавшись инструментом дизайна, добавить Button из палитры элементов и задать атрибуты.
Атрибуты кнопки
Button является подклассом TextView и наследует атрибуты от TextView и View. Ниже приведены некоторые важные атрибуты кнопки, которые можно использовать для настройки стиля и поведения.
- background: установка в качестве фона как цвета, так и drawable
- onClick: установить метод, который будет запускаться при нажатии на кнопку
- minHeight: для определения минимальной высоты кнопки
- minWidth: для определения минимальной ширины кнопки
- stateListAnimator: определение анимации при изменении состояния кнопки
- focusable: для определения того, будет ли обработано нажатие клавиши
- clickable: указать, является ли кнопка кликабельной
- gravity: установка выравнивания текста кнопки
- textAppearance: установить стиль текста
Включение и выключение кнопки
Вы можете использовать атрибут enabled для включения или выключения кнопки, установив его в true или false. Также это можно сделать программно, вызвав метод setEnabled(), как показано ниже:
Кнопка с Drawable
Вы можете отображать на кнопке вместе с текстом изображение, используя drawableTop, drawableRight, drawableBottom или drawableLeft, в зависимости от того, где располагать картинку, как показано на скриншоте ниже.
ImageButton
Android также предоставляет ImageButton, задачей которого является использование изображения в качестве кнопки. Чтобы установить изображение, вы можете использовать атрибут src. Вы также можете использовать разные изображения, которые будут меняться в зависимости от состояния кнопки, меняя в XML drawable selector как показано ниже.
Пример XML drawable selector
Обработка нажатий на кнопку
Клики можно обрабатывать двумя способами. Первый — это установить атрибут onClick в разметке XML. Второй — назначить кнопке слушатель в коде активности или фрагмента.
Чтобы установить атрибут onClick, сначала определите метод типа void, принимающий в качестве параметра View, в активности или фрагменте и затем используйте имя этого метода как значение для атрибута onClick, как показано ниже.
Ниже приведён код обработки нажатия с помощью слушателя.
Дизайн и стили кнопок
Вы можете применять стили и темы для изменения внешнего вида кнопок. Платформа Android предоставляет заранее определённые стили. На рисунке ниже вы можете увидеть, как отображаются кнопки с различными стилями.
Пример применения темы для кнопки.
Настройка стилей кнопок
Вы можете изменить цвета по умолчанию для стилей, применяемых к кнопке, установив атрибут colorAccent на уровне приложения и атрибут colorButtonNormal на уровне виджета для нужных цветов. Атрибут colorControlHighlight используется для установки цвета кнопки, когда она находится в нажатом состоянии.
Как только вы определите собственный стиль, вы можете применить его к кнопкам с помощью атрибута theme. Ниже приведен пример пользовательской темы.
Кнопка с закруглёнными углами
Вы можете определить элемент inset, как показано ниже, чтобы создать кнопку с закруглёнными углами и сохранить файл с drawable в папке res/drawable. Вы можете увеличить или уменьшить атрибут радиуса элемента, чтобы отрегулировать радиус углов кнопки.
Затем определите стиль, задающий атрибут background для xml drawable и примените его к кнопке с помощью атрибута style.
Высота и тень кнопки
Вы можете установить атрибуты elevation и translationZ, чтобы нарисовать тень кнопки.
Настройка анимации тени
Вы можете определить различные свойства теней для разных состояний кнопки и анимировать переход путём определения селектора. Вы можете применить аниматор к кнопке, используя свойство stateListAnimator.
Обратите внимание, что stateListAnimator установлен в null в приведённом выше примере. Это было сделано для удаления аниматора по умолчанию, чтобы elevation и translationZ работали.
Чтобы настроить анимацию тени при изменении состояния кнопок, вам нужно определить селектор, как показано ниже, в папке res/animator и установить свойство stateListAnimator своей темы для определённого аниматора.
Примените следующую тему, которая использует аниматор, к кнопке с использованием атрибута style или theme.
Простая кнопка логина
Совмещая всё вышесказанное, можно создать красивую кнопку, позволяющую, например, заходить пользователям на свои аккаунты. Код разметки будет выглядеть следующим образом:
Кроме того, с помощью атрибута drawableLeft можно добавить изображение к нашей кнопке, в том числе и векторное. На старых устройствах, векторные изображения вызывают падение всего приложения, поэтому сделаем это программно в коде активности при помощи AppCompatResources:
Метод setCompoundDrawablesWithIntrinsicBounds() делает то же, что и атрибуты drawableLeft, drawableTop и так далее. В качестве параметров нужно указать, где именно будет размещаться изображение (указываем null в случае, если здесь изображение не нужно).
Источник