ImageButton
имеет другую цепочку наследования, то есть не расширяется Button
:
ImageButton
<<code>ImageView <<code>View
Он продолжает получать события клика
Вот что происходит, когда вы устанавливаете прослушиватель щелчков для View
:
public void setOnClickListener(OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
mOnClickListener = l;
}
Таким образом, если вы установите слушателя, android:clickable="false"
изменится на android:clickable="true"
.
и его внешний вид не меняется, как стандартная кнопка
Вы должны предоставить списку нарисованных состояний для представления, чтобы оно могло установить соответствующее изображение на основе android:enabled
. У тебя есть это? Или у вас есть единственное изображение для вашей кнопки?
EDIT: Вы можете найти информацию о StateListDrawable здесь . android:state_enabled
- это то, что вам нужно использовать в списке, чтобы указать ОС, какой образ использовать для этого состояния.
EDIT2: так как вам действительно нужно добавить слушателя, вы можете проверить внутри слушателя if (!isEnabled()) { return; } else { /* process the event */ }
.