Очистка фона в ImageButton
Добавлено: 26 апр 2012, 14:03
Часто бывает необходимо поставить на кнопку вместо текста изображение.
Здесь как минимум два пути:
1) использовать Button
2) использовать ImageButton
В первом случае все просто и топорно, кладем нужное изображение в background (если нужен 9-patch) и вуаля, все работает без глюков. Проблема в том, что не будет интерактивности, т.е. нажатий и фокуса. Писать вручную - лишняя работа
Во втором случае при использовании ImageButton можно создать xml с описанием всех трех состояний кнопки, и это будет обрабатываться автоматически (подробнее читай http://developer.android.com/reference/ ... utton.html). Проблема в том, что по краям кнопки остается "рамка" стандартного изображения кнопки, а ваше изображение помещается в центр. Вот так:

Много где для избавления от этого советуют для ImageButton поставить background в транспарент, т.е. #00000000, но проявляется глюк: если фон не черный, то фоновое изображение которое размещается ЗА кнопкой дублируется и помещается на фон кнопки, подстраиваясь под размер. Причем при верстке в визуальном окне в эклипсе все нормально, но на девайсе не айс. Иллюстрация:

Выход нашел в установке в background ImageView изображения 1*1 пиксель, прозрачной.
PS возможно, есть способ обойтись и без этого, буду рад если вы его озвучите.
Здесь как минимум два пути:
1) использовать Button
2) использовать ImageButton
В первом случае все просто и топорно, кладем нужное изображение в background (если нужен 9-patch) и вуаля, все работает без глюков. Проблема в том, что не будет интерактивности, т.е. нажатий и фокуса. Писать вручную - лишняя работа
Во втором случае при использовании ImageButton можно создать xml с описанием всех трех состояний кнопки, и это будет обрабатываться автоматически (подробнее читай http://developer.android.com/reference/ ... utton.html). Проблема в том, что по краям кнопки остается "рамка" стандартного изображения кнопки, а ваше изображение помещается в центр. Вот так:

Много где для избавления от этого советуют для ImageButton поставить background в транспарент, т.е. #00000000, но проявляется глюк: если фон не черный, то фоновое изображение которое размещается ЗА кнопкой дублируется и помещается на фон кнопки, подстраиваясь под размер. Причем при верстке в визуальном окне в эклипсе все нормально, но на девайсе не айс. Иллюстрация:

Выход нашел в установке в background ImageView изображения 1*1 пиксель, прозрачной.
PS возможно, есть способ обойтись и без этого, буду рад если вы его озвучите.