Разница между кликабельными ImageView и ImageButton
Мне просто интересно, существует ли какая-либо существенная разница между ImageView
, который настроен на кликабельность, по сравнению с ImageButton
?
Есть ли причина для использования одного над другим? Есть ли ограничение на drawable для ImageButton
, которое оставляет ImageView
единственно возможным вариантом?
Возможно, я потеряю любую функциональность кнопки, если я выберу кликабельную ImageView
над ImageButton
?
Ответы
Ответ 1
Нет различий, кроме стиля по умолчанию. ImageButton
по умолчанию имеет ненулевой фон.
EDIT. Кроме того, метод ImageButton.onSetAlpha()
всегда возвращает false, scaleType
установлен на center
и всегда раздувается как настраиваемый.
Здесь ImageButton
стиль по умолчанию:
<style name="Widget.ImageButton">
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:scaleType">center</item>
<item name="android:background">@android:drawable/btn_default</item>
</style>
Ответ 2
ImageButton наследуется от ImageView
public class ImageButton extends ImageView {
public ImageButton(Context context) {
this(context, null);
}
public ImageButton(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.imageButtonStyle);
}
public ImageButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setFocusable(true);
}
@Override
protected boolean onSetAlpha(int alpha) {
return false;
}
@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
event.setClassName(ImageButton.class.getName());
}
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(ImageButton.class.getName());
}
как @Micheal описать, что я просто добавляю детали к его ответу
Ответ 3
Эффект нажатия кнопки, когда я нажимаю, есть для кнопки изображения, но не для изображения.