Imagebutton android studio изменить размер

Подогнать изображение в 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 – масштабирование кнопки изображения

Я пытаюсь подобрать образ внутри ImageButton для тестирования, но способ, которым работает ImageButton не так, как ожидалось.

Первоначально я сделал изображение с размером изображения 988×89 пикселей и разместил его внутри ImageButton , который находится в эмулированном экране с разрешением 7 дюймов 1024×600 пикселей. ImageButton – 988dp x 89dp , я знаю, что dp не совпадает с пикселями, но для этого разрешения я ожидал, что изображение будет достаточно масштабировать, чтобы занять большую часть ImageButton . Также я изменился на px вместо dp для тестирования, и это не имело никакого значения.

Но вместо этого ImageButton сделал изображение внутри него ОЧЕНЬ маленьким (синие линии являются границами ImageButton а зеленая линия – индикацией выравнивания по центру).

Поэтому вопрос №1: Почему ImageButton делает изображение таким большим, как это настолько мало, когда оно может заполнить большую часть экрана, даже ImageButton размер ImageButton очень широк?

Поэтому, чтобы преодолеть это, я выбрал adjustViewBounds который не имел никакого значения, что вызывает вопрос №2: Почему? Не следует ли настраивать границы представления для настройки границ обзора?

Поэтому позже я изменил scaleType на fitCenter и изображение стало:

Это тоже странно для меня, так как ImageButton имеет тот же формат изображения, что и изображение, поэтому я ожидал бы, что он будет соответствовать 100%, но он не подходит (ширина по обеим сторонам изображения равна ширине).

Читайте также:  Как сделать резервное восстановление андроид

Поэтому позже я изменил scaleType на fitXY и я получил свой окончательный результат:

Кажется, что это ожидаемое изображение (сравнение образа fitXY с изображением fitCenter в Photoshop показывает, что образ fitCenter немного овальный, но здесь его невозможно fitCenter , что ожидается, так как ширина не соответствует Изображение по высоте).

Итак, мой общий вопрос (№ 3): Каков правильный способ подбора изображения на Android, и ожидать, что он будет иметь обычный размер на экране, и почему масштабирование настолько грязное, и я делаю это неправильно?

Я знаю, что есть проблемы с размерами экрана и dp и т. Д., Но масштабирование не ведет себя контролируемым образом, fitCenter делает изображение овальным, а fitXY слишком сильно зависит от установки правильного отношения изображения на XY, поэтому мне интересно, Я делаю что-то неправильно и как это должно быть правильно.

Это хорошая попытка, вы пытаетесь глубже проникнуть в андроидные реализации.

Ответ # 3:

Сначала предоставление точного размера, так как высота и ширина не являются хорошей практикой в ​​Android. Если вы хотите знать, почему, причина была бы просто будет пытаться сжать / развернуть изображение до указанного вами размера в параметрах высоты и ширины. Всегда wrap_content является предпочтительным параметром, так что ОС будет автоматически настраиваться в зависимости от размера экрана. Если вам нужно изменить:

Ответ # 1:

Почему ImageButton делает изображение таким большим, как это настолько мало, когда оно может заполнить большую часть экрана, даже если размер ImageButton очень широк?

Ответ аналогичен вышесказанному. Размер вашего изображения будет намного меньше, чем у Android OS, рассчитанного в зависимости от вашего упомянутого размера, с учетом разрешения устройства. Используйте сайт http://coh.io/adpi/ (или http://density.brdrck.me/ ), чтобы сделать его простым для вычисления. Всегда принимайте mdpi в качестве стандартного или базового. Предположим, что ваш размер изображения составляет 988X89 в mdpi, это будет:

Теперь, как будто вы пытаетесь просмотреть изображение 988px X 89px на экране xhdpi, где Android Os рассчитал размер изображения как 1976px X 178px, что намного больше вашего размера изображения 988px X 89px. Поэтому вы получаете небольшое изображение с большей площадью белого цвета.

Как это исправить? Просмотрите спецификации Android для поддержки различных экранов плотности. Это требует, чтобы вы создавали изображения специально для hdpi, mdpi, xhdpi и помещали их в соответствующие папки:

На активность Creat .. вы можете получить разрешение экрана … и изменить размер изображения в соответствии с экраном Widht и Height .. и установить изображение. Таким образом, ваше отношение будет одинаковым для всех типов устройств.

Для изменения размеров изображений . 1. Получить ширину и высоту экрана. 2. увеличить изображение в соответствии с разрешением экрана. 3.set Изображение для просмотра.

Вы также должны проверить, есть ли какая-либо прокладка вокруг вашего imageButton, я создал ту, которая выглядела очень похожей на использование, и хотя fitXY работал, изменение размера изображения стало очень запутанным с ошибкой. Однако я тогда понял, что вокруг всего изображения было 100p, поэтому граница была на расстоянии 100 дп на каждом краю изображения.

Читайте также:  Что может быть с планшетом если он не включается андроид

Источник

Настройка размера ImageButton в Android

есть ли способ сделать это? Я попытался заполнить изображение и установить ширину / высоту представления, но ни один из них не работает. Вот пример:

Я хочу, чтобы кнопка была шире, чем она высока,но она выходит наоборот.

6 ответов

просто играл, чтобы попытаться понять вашу проблему.

кажется ImageButton — составное представление с несколькими предварительно заданными значениями. Например, какое-то поле, которое нельзя переопределить с помощью XML. Если вы не можете изменить свой образ в соответствии с тем, что вы хотите, то вам лучше создать свой собственный составной вид.

вот мой пример составного представления вы можете сделать сами:

и оригинальные кнопки:

здесь мы можем видеть пользовательское изображение / композит кнопки, за которым следует сборка в ImageButton как часть SDK:

Set android:background вместо android:src чтобы установить изображение на кнопке. Это позволит настроить изображение на размер кнопки. Затем отрегулируйте прокладку после.

вы не должны использовать sp в качестве размера размера-dp следует использовать, поскольку это поможет вашему масштабу просмотра непосредственно с различной плотностью экрана и разрешениями. Посмотреть Здесь для измерений.

padding будет отталкивать другие элементы от границы вашего вида. margin будет толкать содержимое вашего вида внутрь от вашей границы (т. е. раздавит доступное пространство для вашего изображения) . Граница определяется по высоте и ширине. Без дополнительной информации я бы угадайте, что вас смущают ваши поля-удалите их и поэкспериментируйте.

также полезно для вас: android:scaleType=»fitXY» делает растяжки изображения, чтобы соответствовать как X и y-размеры, которые доступны для него. Это поможет вам увидеть холст, доступный вашему изображению. Как только вы почувствуете, что область достаточно велика для правильного масштабирования изображения, измените тип масштаба на centerInside. Посмотреть Здесь для всех типов масштаба.

Я использую minWidth и minHeight свойства, в сочетании с fitXY тип масштаба и упаковка его содержимого для модуляции формы моей кнопки.

вы хотите сделать свою кнопку «шире», так, например, распечатав кнопку 200X100 из квадратного значка, вы можете выложить ее так:

можете ли вы объяснить свой вопрос более широко, чтобы мы могли больше понять.

согласно моему пониманию, вы хотите установить высоту/ширину ImageButton. Но это не работает, не так ли? Я хочу спросить вас, что, если вы пишете какую-либо конкретную высоту/ширину, то и это не работает?

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

пожалуйста, объясните свой вопрос.

Я закончил макет после ответа Грэма. Четыре «imageButton» фиксируют дно, ту же ширину, изменяемый размер изображения. спасибо!

Источник

ImageButton (Кнопка-изображение)

Общая информация

Находится в разделе Buttons.

Компонент ImageButton представляет собой кнопку с изображением (вместо текста). По умолчанию ImageButton похож на обычную кнопку.

В режиме дизайна изображение на кнопке определяется атрибутом android:src

Можно сделать двойной щелчок, чтобы сразу установить нужное свойство.

Методы

Программно можно установить изображения через различные методы.

Читайте также:  Mac address on google android

setImageBitmap() Используется, чтобы указать в качестве изображения существующий экземпляр класса Bitmap setImageDrawable() Используется, чтобы указать в качестве изображения существующий экземпляр класса Drawable setImageResource() Используется, чтобы указать в качестве изображения существующий идентификатор ресурса (см. пример) setImageURI() Используется, чтобы указать в качестве изображения существующий адрес типа Uri. В некоторых случаях элемент кэширует изображение и после изменения изображения по прежнему выводит старую версию. Рекомендуется использовать инструкцию setImageURI(null) для сброса кэша и повторный вызов метода с нужным Uri

Примеры

С помощью метода setImageURI() можно обратиться к ресурсу типа Drawable по его идентификатору:

Например, можно задать путь Uri:

Можно обратиться к ресурсу по его типу/имени:

В этом случае код будет следующим:

Щелчок

Как и у обычной кнопки, интерес представляет только щелчок. В нашем примере мы будем менять поочередно картинки на кнопке (нужно подготовить две картинки в папке drawable)

Теперь при каждом щелчке изображение на кнопке будет циклически переключаться между двумя картинками.

Продолжительное нажатие

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

Для обработки продолжительного нажатия нужно реализовать класс View.OnLongClickListener и передать его в метод setOnLongClickListener(). Класс OnLongClickListener имеет один обязательный метод OnLongClick(). В принципе это похоже на метод OnClick(), только имеет возвращаемое значение.

Запустите проект и убедитесь, что при быстром нажатии ничего не происходит, а при более продолжительном нажатии всплывает сообщение.

Источник

Установите изображение в ImageButton в Android

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

Я хочу, чтобы они покрывали 75% площади кнопки. Но там, где некоторые изображения занимают меньше площади, некоторые из них слишком велики, чтобы вписаться в imageButton. Как программно изменить размер и показать их? Ниже приведен снимок экрана

ниже приведен XML-файл

и фрагмент класса MyClass.java:

7 ответов:

Я хочу, чтобы они покрывали 75% площади кнопки.

использовать android:padding=»20dp» (отрегулируйте заполнение по мере необходимости), чтобы контролировать, сколько изображение занимает на кнопке.

но где, как некоторые изображения охватывают меньше площади, некоторые из них слишком велики, чтобы вписаться в imageButton. Как программно изменить размер и показать их?

использовать android:scaleType=»fitCenter» чтобы иметь Android масштабировать изображения, и android:adjustViewBounds=»true» чтобы они корректировали свои границы из-за масштабирования.

все эти атрибуты могут быть установлены в коде на каждом ImageView во время выполнения. Однако, на мой взгляд, гораздо проще установить и просмотреть в xml.

и не использовать sp для всего, кроме размера текста, он масштабируется в зависимости от предпочтения размера текста, установленного пользователем, поэтому ваш sp размеры будут больше, чем предполагалось, если пользователь имеет «большой» текст настройки. Используйте dp вместо этого, поскольку он не масштабируется размером текста пользователя предпочтение.

вот фрагмент того, как должна выглядеть каждая кнопка:

Источник

Оцените статью