#java #android
Имеется png картинка и цель - добавить её на button. Проблема в том, что если добавляю через @android:background кнопки, то картинка становится с лесенками (как будто антиалиазинг выключен), либо становится мутной. Если использую разметку ниже, то вообще картинка не показывается, остаются только границы на button.- Имеются предоположения, что неправильно добавляю png в проект. Добавляю через res->new->image asset Исправил, теперь всё работает
Картинку перемещаю вручную в папку res/drawable-hdpi Только есть небольшая проблема, что селектор android:state_pressed="true" всё равно отказывается работать
Ответы
Ответ 1
По описанию проблема в том, что нет ресурса с достаточным качеством картинки. Либо ресурс с соответствующим квалификатором отсутствует вовсе (например res/drawable-xxhdpi/), либо хранящееся в нем изображение имеет низкое качество - собственный размер в пикселях мал для данного разрешения или достаточный размер, но неудачный скалинг, то есть размер нормальный, но в результате обработки по увеличению получилась хрень вместо четкой картинки. Так, для экрана плотностью XXHDPI (~480dp) изображение для стандартной иконки (размер 48x48dp) должно иметь абсолютные геометрические размеры 144x144 пикселя с содержимым соответствующего качества (подробнее смотрите офф.документацию). В первом случае недостающие ресурсы нужно создать, во втором посмотреть, что там за изображения вообще лежат и привести их в соответствие. PS: селектор у вас составлен неверно. В конце селектора должен быть айтем для вида по умолчанию, который не имеет никаких стейтов (в вашем случае вместо- должен быть просто
- и располагаться самым последним в иерархии айтемов. Выбор айтема в селекторе производится по следующему алгоритму: проверяется условие стейта первого айтема, если совпадает, то он выводится и селектор заканчивает работу, иначе переходит ко второму айтем и проверяет его условие и так далее, если ни одно из условий не выполняется последним выполняется айтем без условий, который содержит, как правило, нормальный вид (состояние без всяких нажатий, фокусов, селекторов и тд). Картинку в селекторе не видно, потому что ее закрывает shape - фигуры не прозрачные по умолчанию. Смотрите, например этот ответ (вторая часть) по созданию вида из наложения картинки и шейпа.
Ответ 2
Подробная документация от Google расскажет о Button ссылка на документацию А так же можно почитать о файлах ресурсов ссылка на документацию по поводу ресурсов Так же, что бы избежать деформации картинки, советую изучить такую вещь как VectorDrawable, по ссылке выше есть описание.Ответ 3
Знаю, что не всем подойдет совет, но почему бы не использовать ImageView, для которой, как и для кнопки, прикрепить OnClickListener?
Комментариев нет:
Отправить комментарий