可点击的 ImageView 和 ImageButton 之间的区别

我只是想知道,与 ImageButton相比,设置为可点击的 ImageView是否存在显著差异?

有什么理由用一个来代替另一个吗?对于 ImageButton的可绘制性是否有任何限制,使得 ImageView成为唯一可能的选择?

如果我选择一个可点击的 ImageView而不是 ImageButton,我可能会失去按钮的任何功能吗?

46711 次浏览

没有区别,除了默认的样式。 ImageButton默认有一个非空的背景。

编辑 : 此外,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>

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 所描述的,我只是在他的回答中添加了一些细节

当我点击图像按钮时,点击按钮的效果只存在于图像按钮中,而不存在于图像视图中。

如果需要,可以将按钮的循环效果作为背景。