- ImageButton (Кнопка-изображение)
- Общая информация
- Методы
- Примеры
- Щелчок
- Продолжительное нажатие
- Android ImageButton — как изменить изображение при нажатии кнопки button?
- 5 ответов
- Похожие вопросы:
- Подогнать изображение в ImageButton в Android
- Делаем красивые кнопки в Android
- Добавляем кнопку на разметку
- Атрибуты кнопки
- Включение и выключение кнопки
- Кнопка с Drawable
- ImageButton
- Обработка нажатий на кнопку
- Дизайн и стили кнопок
- Настройка стилей кнопок
- Кнопка с закруглёнными углами
- Высота и тень кнопки
- Настройка анимации тени
- Простая кнопка логина
- Android ImageButton with Examples
- Create ImageButton in XML Layout File
- Create ImageButton Control in Activity File
- Anndroid Handle ImageButton Click Events
- Define ImageButton Click Event in XML Layout File
- Define ImageButton Click Event in Activity File
- Android ImageButton Control Attributes
- Android ImageButton Control Example
- activity_main.xml
- MainActivity.java
- Output of Android ImageButton Example
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(), только имеет возвращаемое значение.
Запустите проект и убедитесь, что при быстром нажатии ничего не происходит, а при более продолжительном нажатии всплывает сообщение.
Источник
Android ImageButton — как изменить изображение при нажатии кнопки button?
Если был нажат button, я хочу включить wifi, а также изменить изображение ImageButton, но я не знаю, как его изменить
Я также пробовал это от того, как изменить изображение button с каждым щелчком мыши? но это не работает:
когда я пишу код выше, android studio показывает это: Не удается разрешить символ setOnClickListener
Я также создал button_wifi_selector xml, который выглядит следующим образом:
и в своей деятельности я имею это
но это не то, чего я хочу Может ли кто-нибудь мне помочь? Спасибо
EDIT: он работает с первым кодом. Мне просто нужно было удалить onClick из ImageButton в xml BUT: он меняет картинку во второй раз, когда я запускаю приложение. После этого он каждый раз меняет его
5 ответов
Как сделать так, чтобы скрытое изображение появлялось при нажатии кнопки submit button?
Я хочу, чтобы в моем приложении android ImageButton менял свое изображение при нажатии и отпускании, а при повторном нажатии изображение для ImageButton будет изменено обратно , как это сделать?
этот код работает для меня; протестируйте его
Вот как вы должны это сделать
Вы можете использовать togglebutton следующим образом
Вы можете определить логический флаг и просто изменить видимость элементов. Описание: changeBack-это button. Этот код предназначен для изменения изображений Ваш onClick не знает, какой идентификатор нажат?
Я хочу знать, есть ли способ изменить изображение кнопки при нажатии на нее. Изначально кнопка имеет значок паузы. Когда он нажат, я хочу, чтобы отображался значок воспроизведения. При каждом нажатии кнопки значок должен меняться между воспроизведением и паузой. Есть ли какой-нибудь способ сделать.
Возможный Дубликат : Android ImageButton с выбранным состоянием? Мне было интересно, есть ли способ изменить изображение ImageButton при нажатии на него? Предполагается, что это воспроизведение/пауза button, поэтому, если звук воспроизводится, то изображение должно быть pause, и как только.
Я изменил его,для включения/выключения он может помочь вам
например, вам нужно создать метод с параметром представления
Похожие вопросы:
Мне нужно изменить фоновое изображение Button , пока оно нажато. Если у меня есть фоновое изображение на Button до его нажатия, мне нужно изменить это фоновое изображение, когда нажата Button , а.
Я создаю новое приложение, и для одного из моих режимов я хочу изменить изображение пользовательской кнопки, нажав кнопку button.i have this custom button setup with an image, и я хочу изменить.
Я новичок в android и создал простое приложение. При нажатии кнопки textview должно измениться, что функция работает нормально, но изображение кнопки не меняется при ее нажатии. вот моя пуговица в.
Как сделать так, чтобы скрытое изображение появлялось при нажатии кнопки submit button?
Я хочу, чтобы в моем приложении android ImageButton менял свое изображение при нажатии и отпускании, а при повторном нажатии изображение для ImageButton будет изменено обратно , как это сделать?
Я хочу знать, есть ли способ изменить изображение кнопки при нажатии на нее. Изначально кнопка имеет значок паузы. Когда он нажат, я хочу, чтобы отображался значок воспроизведения. При каждом.
Возможный Дубликат : Android ImageButton с выбранным состоянием? Мне было интересно, есть ли способ изменить изображение ImageButton при нажатии на него? Предполагается, что это.
Привет каждая вещь для изменения кнопки Изменить изображение, которое я нашел, было изменить изображение, когда вы нажимаете на кнопку, как это imageButton = (ImageButton).
У меня есть ImageButton в Android, и мне нужно изменить изображение при нажатии кнопки, чтобы пользователю было ясно, что кнопка нажата. То, что я пробовал, — это использовать xml с селектором в.
У меня есть button с оранжевым фоном. Но при нажатии кнопки button цвет не остается прежним. Он меняет свой цвет по умолчанию. А при выпуске button я получаю обратно тот же цвет. Можно ли изменить.
Источник
Подогнать изображение в ImageButton в Android
У меня есть 6 ImageButton в моей деятельности, я устанавливаю изображения через мой код в них (не используя xml).
Я хочу, чтобы они занимали 75% площади кнопок. Но когда некоторые изображения занимают меньшую площадь, некоторые слишком велики, чтобы поместиться в кнопку imageButton. Как программно изменить размер и показать их? Ниже скриншот
ниже находится xml-файл
и фрагмент myClass.java:
Я хочу, чтобы они занимали 75% площади кнопок.
Используйте android:padding=»20dp» (при необходимости измените отступы), чтобы контролировать, сколько изображения занимает кнопка.
но когда некоторые изображения занимают меньшую площадь, некоторые слишком велики, чтобы поместиться в кнопку imageButton. Как программно изменить размер и показать их?
Используйте, android:scaleType=»fitCenter» чтобы Android масштабировал изображения, и android:adjustViewBounds=»true» чтобы они корректировали свои границы из-за масштабирования.
Все эти атрибуты могут быть установлены в коде на каждом ImageButton во время выполнения. Тем не менее, на мой взгляд, гораздо проще установить и просмотреть в xml.
Кроме того, не используйте sp для чего-либо, кроме размера текста, оно масштабируется в зависимости от предпочтения размера текста, которое задает пользователь, поэтому ваши sp размеры будут больше, чем предполагалось, если у пользователя есть «большой» параметр текста. Используйте dp вместо этого, поскольку он не масштабируется предпочтением размера текста пользователя.
Вот фрагмент того, как должна выглядеть каждая кнопка:
Источник
Делаем красивые кнопки в 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 в случае, если здесь изображение не нужно).
Источник
Android ImageButton with Examples
In android, Image Button is a user interface control that is used to display a button with an image and to perform an action when a user clicks or taps on it.
By default, the ImageButton looks same as normal button and it performs an action when a user clicks or touches it, but the only difference is we will add a custom image to the button instead of text.
Following is the pictorial representation of using Image Buttons in android applications.
In android, we have different types of buttons available to use based on our requirements, those are Button, ImageButton, ToggleButton, and RadioButton.
In android, we can add an image to the button by using attribute android:src in XML layout file or by using the setImageResource() method.
In android, we can create ImageButton control in two ways either in the XML layout file or create it in the Activity file programmatically.
Create ImageButton in XML Layout File
Following is the sample way to define ImageButton control in XML layout file in android application.
xml version= «1.0» encoding= «utf-8» ?>
LinearLayout xmlns: android = «http://schemas.android.com/apk/res/android»
android :orientation= «vertical» android :layout_width= «match_parent»
android :layout_height= «match_parent» >
ImageButton
android :id= «@+id/addBtn»
android :layout_width= «wrap_content»
android :layout_height= «wrap_content»
android :src= «@drawable/add_icon»/>
LinearLayout >
If you observe above code snippet, here we defined ImageButton control and we are showing the image from drawable folder using android:src attribute in xml layout file.
Create ImageButton Control in Activity File
In android, we can create ImageButton control programmatically in activity file based on our requirements.
Following is the example of creating ImageButton control dynamically in an activity file.
LinearLayout layout = (LinearLayout)findViewById(R.id. l_layout );
ImageButton btn = new ImageButton( this );
btn.setImageResource(R.drawable. add_icon );
layout.addView(btn);
Anndroid Handle ImageButton Click Events
Generally, whenever the user clicks on ImageButton, the ImageButton object will receives an on-click event.
In android, we can define button click event in two ways either in XML layout file or create it in Activity file programmatically.
Define ImageButton Click Event in XML Layout File
We can define click event handler for button by adding android:onClick attribute to the element in our XML layout file.
The value of android:onClick attribute must be the name of method which we need to call in response to a click event and the Activity file which hosting XML layout must implement the corresponding method.
Following is the example of defining a button click event using android:onClick attribute in XML layout file.
android :onClick= «addOperation»/>
LinearLayout >
In Activity that hosts our XML layout file, we need to implement click event method like as shown below
/** Called when the user touches the button */
public void addOperation(View view) <
// Do something in response to button click
>
Define ImageButton Click Event in Activity File
In android, we can define ImageButton click event programmatically in Activity file rather than XML layout file.
To define button click programmatically, create View.OnClickListener object and assign it to the button by calling setOnClickListener(View.OnClickListener) like as shown below.
ImageButton btnAdd = (ImageButton)findViewById(R.id. addBtn );
btnAdd.setOnClickListener( new View.OnClickListener() <
public void onClick(View v) <
// Do something in response to button click
>
>);
>
This is how we can handle ImageButton click events in android applications based on our requirements.
Android ImageButton Control Attributes
Following are some of the commonly used attributes related to ImageButton control in android applications.
Attribute | Description |
---|---|
android:id | It is used to uniquely identify the control |
android:src | It is used to specify the source file of an image |
android:background | It is used to set the background color for an image button control. |
android:padding | It is used to set the padding from left, right, top and bottom of the image button. |
android:baseline | It is used to set the offset of the baseline within the view. |
Android ImageButton Control Example
Following is the example of defining a one ImageButton and two EditText controls in LinearLayout to get the data of EditText controls when click on ImageButton in android application.
Create a new android application using android studio and give names as ButtonExample. In case if you are not aware of creating an app in android studio check this article Android Hello World App.
Now open an activity_main.xml file from \res\layout path and write the code like as shown below
activity_main.xml
xml version= «1.0» encoding= «utf-8» ?>
LinearLayout xmlns: android = «http://schemas.android.com/apk/res/android»
android :orientation= «vertical» android :layout_width= «match_parent»
android :layout_height= «match_parent» android :id= «@+id/l_layout» >
TextView
android :id= «@+id/fstTxt»
android :layout_width= «wrap_content»
android :layout_height= «wrap_content»
android :layout_marginLeft= «100dp»
android :layout_marginTop= «150dp»
android :text= «First Number»/>
EditText
android :id= «@+id/firstNum»
android :layout_width= «wrap_content»
android :layout_height= «wrap_content»
android :layout_marginLeft= «100dp»
android :ems= «10»/>
TextView
android :id= «@+id/secTxt»
android :layout_width= «wrap_content»
android :layout_height= «wrap_content»
android :text= «Second Number»
android :layout_marginLeft= «100dp»/>
EditText
android :id= «@+id/secondNum»
android :layout_width= «wrap_content»
android :layout_height= «wrap_content»
android :layout_marginLeft= «100dp»
android :ems= «10»/>
ImageButton
android :id= «@+id/addBtn»
android :layout_width= «wrap_content»
android :layout_height= «wrap_content»
android :layout_marginLeft= «100dp»
android :src= «@drawable/add_icon»/>
LinearLayout >
If you observe above code we created one ImageButton, two TextView controls and two EditText controls in XML Layout file.
Once we are done with the creation of layout with required control, we need to load the XML layout resource from our activity onCreate() callback method, for that open main activity file MainActivity.java from \java\com.tutlane.buttonexample path and write the code like as shown below.
MainActivity.java
package com.tutlane.buttonexample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity <
@Override
protected void onCreate(Bundle savedInstanceState) <
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
final EditText firstNum = (EditText)findViewById(R.id. firstNum );
final EditText secNum = (EditText)findViewById(R.id. secondNum );
ImageButton btnAdd = (ImageButton)findViewById(R.id. addBtn );
btnAdd.setOnClickListener( new View.OnClickListener() <
@Override
public void onClick(View v) <
if ( firstNum .getText().toString().isEmpty() || secNum .getText().toString().isEmpty())
<
Toast.makeText(getApplicationContext(), «Please fill all the fields» , Toast. LENGTH_SHORT ).show();
>
else <
int num1 = Integer.parseInt( firstNum .getText().toString());
int num2 = Integer.parseInt( secNum .getText().toString());
Toast.makeText(getApplicationContext(), «SUM = » + (num1 + num2), Toast. LENGTH_SHORT ).show();
>
>
>);
>
>
If you observe above code we are calling our layout using setContentView method in the form of R.layout.layout_file_name in our activity file. Here our xml file name is activity_main.xml so we used file name activity_main and we are getting the values from two EditText controls on ImageButton click and performing an addition operation.
Generally, during the launch of our activity, the onCreate() callback method will be called by the android framework to get the required layout for an activity.
Output of Android ImageButton Example
When we run the above example using an android virtual device (AVD) we will get a result like as shown below.
This is how we can use ImageButton control in android applications to perform required operations on ImageButton tap or click based on our requirements.
Источник