我只是想知道设置为可点击的ImageView
与ImageButton
之间是否存在显着差异?
有没有理由使用其中一个?对ImageButton
的drawable有什么限制,只留下ImageView
作为唯一可能的选项吗?
如果我选择点击ImageView
而不是ImageButton
,我是否会丢失按钮的任何功能?
答案 0 :(得分:148)
除默认样式外没有任何差异。默认情况下,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>
答案 1 :(得分:19)
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描述的那样我只是在他的回答中添加细节
答案 2 :(得分:6)
单击时按钮单击的效果是图像按钮,但不适用于imageView。